Program 4 : Packages
Create a Java program that :
Use of packages and interfaces
Access modifiers (
private
,default
,protected
,public
)Importing packages
Interface implementation, including default methods
Directory Structure
/p1
Protection.java
Derived.java
SamePackage.java
MyInterface.java
Demo.java
/p2
Protection2.java
OtherPackage.java
Demo.java
p1/Protection.java
java
package p1;
public class Protection {
int n = 1; // default access
private int n_pri = 2; // private access
protected int n_pro = 3; // protected access
public int n_pub = 4; // public access
public Protection() {
System.out.println("Inside Protection Constructor");
System.out.println("Value of n: " + n);
System.out.println("Value of n_pri: " + n_pri);
System.out.println("Value of n_pro: " + n_pro);
System.out.println("Value of n_pub: " + n_pub);
}
}
p1/Derived.java
java
package p1;
class Derived extends Protection {
Derived() {
System.out.println("Inside Derived Constructor");
System.out.println("Value of n: " + n);
// System.out.println("Value of n_pri: " + n_pri);
// private - not accessible
System.out.println("Value of n_pro: " + n_pro);
System.out.println("Value of n_pub: " + n_pub);
}
}
p1/SamePackage.java
java
package p1;
class SamePackage {
Protection p = new Protection();
SamePackage() {
System.out.println("Inside SamePackage Constructor");
System.out.println("Value of n: " + p.n);
// System.out.println("Value of n_pri: " + p.n_pri);
// private - not accessible
System.out.println("Value of n_pro: " + p.n_pro);
System.out.println("Value of n_pub: " + p.n_pub);
}
}
p1/MyInterface.java
java
package p1;
public interface MyInterface {
void display(); // abstract method
default void show()
{
System.out.println("Default method in MyInterface");
}
}
p1/Demo.java
java
package p1;
public class Demo implements MyInterface
{
public void display()
{
System.out.println("Implementation of abstract method from MyInterface");
}
public static void main(String[] args)
{
Demo d = new Demo();
d.display();
d.show();
System.out.println("\n--- Access Protection Demonstration ---");
Protection ob1 = new Protection();
Derived ob2 = new Derived();
SamePackage ob3 = new SamePackage();
}
}
p2/Protection2.java
java
package p2;
// import p1.Protection;
class Protection2 extends p1.Protection {
Protection2() {
System.out.println("Inside Protection2 Constructor");
// System.out.println("Value of n: " + n);
// default - not accessible in another package
// System.out.println("Value of n_pri: " + n_pri);
// private - not accessible
System.out.println("Value of n_pro: " + n_pro);
System.out.println("Value of n_pub: " + n_pub);
}
}
p2/OtherPackage.java
java
package p2;
class OtherPackage {
OtherPackage() {
p1.Protection pro = new p1.Protection();
System.out.println("Inside OtherPackage Constructor");
// System.out.println("Value of n: " + pro.n);
// default - not accessible
// System.out.println("Value of n_pri: " + pro.n_pri);
// private - not accessible
// System.out.println("Value of n_pro: " + pro.n_pro);
// protected - not accessible without inheritance
System.out.println("Value of n_pub: " + pro.n_pub);
}
}
p2/Demo.java
java
package p2;
class Demo {
public static void main(String[] args) {
Protection2 obj1 = new Protection2();
OtherPackage obj2 = new OtherPackage();
}
}
Context | Private | Default (No Modifier) | Protected | Public |
---|---|---|---|---|
Same Class | ✅ | ✅ | ✅ | ✅ |
Same Package Subclass | ✅ | ✅ | ✅ | |
Same Package Non-subclass | ✅ | ✅ | ✅ | |
Different Package Subclass | ✅ | ✅ | ||
Different Package Non-subclass | ✅ |