Have a question?
Message sent Close
View Categories

What are access modifiers?

What are access modifiers?

📄
filename.js
// Public class

public class PublicClass {

    // Public variable

    public int number;

    // Public method

    public void display() {

        System.out.println("Number: " + number);

    }

}

// Another class in the same package or a different package

public class Main {

    public static void main(String[] args) {

        PublicClass pc = new PublicClass();

        pc.number = 10;

        pc.display(); // Accessible and outputs: Number: 10

    }

}
📄
filename.js
// Superclass in package 'pkg1'

package pkg1;

public class SuperClass {

    // Protected variable

    protected int number;

    // Protected method

    protected void display() {

        System.out.println("Number: " + number);

    }

}

// Subclass in the same package

package pkg1;

public class SubClass extends SuperClass {

    void show() {
        
        // Accessible because it's protected
        number = 20; 

        // Accessible because it's protected
        display();   

    }

}

// Class in another package

package pkg2;

import pkg1.SuperClass;

public class AnotherClass extends SuperClass {

    public void test() {

        // Accessible because it's protected and we are in a subclass
        number = 30; 

        // Accessible because it's protected and we are in a subclass
        display();   

    }

}

📄
filename.js
// Class with default access in package 'pkg1'

package pkg1;

class DefaultClass {

    // Default variable

    int number;

    // Default method

    void display() {

        System.out.println("Number: " + number);

    }

}

// Class in the same package

package pkg1;

public class Main {

    public static void main(String[] args) {

        DefaultClass dc = new DefaultClass();

        dc.number = 40;

        dc.display(); // Accessible and outputs: Number: 40

    }

}
📄
filename.js
// Class with private members

public class PrivateClass {

    // Private variable

    private int number;

    // Private method

    private void display() {

        System.out.println("Number: " + number);

    }

    // Public method to access private members

    public void setNumber(int num) {

        number = num;

    }

    public void show() {

        display(); // Accessible within the same class

    }

}

public class Main {

    public static void main(String[] args) {

        PrivateClass pc = new PrivateClass();

        pc.setNumber(50);

        pc.show(); // Accessible and outputs: Number: 50

        // The following lines would cause compile-time errors

        // Error: number has private access in PrivateClass
        // pc.number = 60; 

        // Error: display() has private access in PrivateClass
        // pc.display(); 

    }

}