Skip to content

Program 4:

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
    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/Demo.java

java
package p1;

public class Demo {
    public static void main(String[] args) {
        Protection ob1 = new Protection();
        Derived ob2 = new Derived();
        SamePackage ob3 = new SamePackage();
    }
}

p2/Protection2.java

java
package p2;

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();
    }
}

Access Modifier Summary

ModifierSame ClassSame PackageSubclass (other package)Other Package
private
default
protected✅ (via inheritance)
public

Interface with Default Methods

To meet the interface requirement:

MyInterface.java

java
package p1;

public interface MyInterface {
    void abstractMethod();

    default void defaultMethod() {
        System.out.println("Inside default method of interface.");
    }
}

Modified Derived.java (to implement interface)

java
package p1;

class Derived extends Protection implements MyInterface {
    Derived() {
        System.out.println("Inside Derived Constructor");
        System.out.println("Value of n: " + n);
        System.out.println("Value of n_pro: " + n_pro);
        System.out.println("Value of n_pub: " + n_pub);
    }

    public void abstractMethod() {
        System.out.println("Abstract method implemented in Derived.");
    }
}

Made with ❤️ for students, by a fellow learner.