Junior
Tell me about access modifiers in Java.
sobes.tech AI
Answer from AI
In Java, there are four access modifiers:
publicAccessible from anywhere in any package.protectedAccessible within the same package and from subclasses in other packages.- default (absence of modifier) Accessible only within the same package.
privateAccessible only within the same class.
<br/>
Example:
package package1;
public class ClassA {
public int publicField;
protected int protectedField;
int defaultField; // default access
private int privateField;
public void publicMethod() {}
protected void protectedMethod() {}
void defaultMethod() {} // default access
private void privateMethod() {}
}
package package1;
public class ClassB {
public void accessMethods(ClassA obj) {
obj.publicMethod();
obj.protectedMethod();
obj.defaultMethod();
// obj.privateMethod(); // Error: private access
}
}
package package2;
import package1.ClassA;
public class ClassC extends ClassA {
public void accessMethods() {
publicMethod(); // inherited public method
protectedMethod(); // inherited protected method
// defaultMethod(); // Error: default access from another package
// privateMethod(); // Error: private access (not inherited)
}
}
package package2;
import package1.ClassA;
public class ClassD {
public void accessMethods(ClassA obj) {
obj.publicMethod();
// obj.protectedMethod(); // Error: protected access from another package (not a subclass)
// obj.defaultMethod(); // Error: default access from another package
// obj.privateMethod(); // Error: private access
}
}
<br/>
Visibility table:
| Modifier | Same class | Same package | Subclass (other package) | Any place |
|---|---|---|---|---|
private |
Yes | No | No | No |
| default | Yes | Yes | No | No |
protected |
Yes | Yes | Yes | No |
public |
Yes | Yes | Yes | Yes |