Access Modifiers and Inheritance
Access Modifiers and Inheritance
Subclass (Different
Modifier Same Class Same Package Everywhere
Package)
private ✅ ❌ ❌ ❌
default (no
✅ ✅ ❌ ❌
modifier)
protected ✅ ✅ ✅ ❌
public ✅ ✅ ✅ ✅
class Parent {
private int privateVar = 10;
}
package package1;
class Parent {
int defaultVar = 20; // Default access
}
package package2;
import package1.Parent;
package package1;
package package2;
import package1.Parent;
package package1;
package package2;
import package1.Parent;
package package1;
public class Parent {
protected int protectedVar = 50;
}
package package2;
import package1.Parent;
class Test {
public static void main(String[] args) {
Parent obj = new Parent();
// System.out.println(obj.protectedVar); // ERROR: Not accessible through
Parent reference
}
}
Key Takeaways