Subjects

All subjects Django Java Python React Spring Boot JavaScript PHP
Sign Up Free
Interview question

What are Access Modifiers in Java? Java में Access Modifiers क्या हैं?

Answer

Access modifiers control the visibility and accessibility of classes, methods, and variables. Java has four access levels: public, protected, default (package-private), and private.

ModifierSame ClassSame PackageDifferent Package (Subclass)Different Package (Other)
public
protected
default (no modifier)
private
// Access Modifiers Example
public class AccessModifierDemo {
    // Public - accessible everywhere
    public int publicVar = 10;
    public void publicMethod() {
        System.out.println('Public method');
    }
    
    // Protected - accessible in same package and subclasses
    protected int protectedVar = 20;
    protected void protectedMethod() {
        System.out.println('Protected method');
    }
    
    // Default (package-private) - accessible in same package only
    int defaultVar = 30;
    void defaultMethod() {
        System.out.println('Default method');
    }
    
    // Private - accessible only in same class
    private int privateVar = 40;
    private void privateMethod() {
        System.out.println('Private method');
    }
}

// Same package, different class
public class SamePackage {
    public static void main(String[] args) {
        AccessModifierDemo obj = new AccessModifierDemo();
        
        obj.publicVar;          // ✓ Accessible
        obj.publicMethod();     // ✓ Accessible
        obj.protectedVar;       // ✓ Accessible
        obj.protectedMethod();  // ✓ Accessible
        obj.defaultVar;         // ✓ Accessible
        obj.defaultMethod();    // ✓ Accessible
        // obj.privateVar;       // ✗ Compile Error
        // obj.privateMethod();  // ✗ Compile Error
    }
}

// Different package
public class DifferentPackage {
    public static void main(String[] args) {
        AccessModifierDemo obj = new AccessModifierDemo();
        
        obj.publicVar;          // ✓ Accessible
        obj.publicMethod();     // ✓ Accessible
        // obj.protectedVar;     // ✗ Compile Error (unless subclass)
        // obj.defaultVar;       // ✗ Compile Error
        // obj.privateVar;       // ✗ Compile Error
    }
}

// Best Practices:
// 1. Use private for data members (encapsulation)
// 2. Use public for public API methods
// 3. Use protected for methods meant for subclasses
// 4. Use default only when intentional (package-level access)
ModifierVisibility
publicसभी जगह accessible
protectedSame package + subclasses
defaultSame package only
privateSame class only

Was this answer clear?