What are Access Modifiers?
Access modifiers decide who can access a class, method, or variable.
Java has four main access modifiers:
1.private – accessible only within the same class.
- Example: A private variable cannot be accessed outside its class directly.
- Used for data hiding.
2.default (package-private) – no keyword is used.
- Accessible within the same package.
- Cannot be accessed from other packages, even by subclasses.
3.protected – accessible within same package and subclasses in different packages.
- Mostly used in inheritance to share with child classes.
4.public – accessible from anywhere.
Quick Rules Table
Why no protected/private for top-level classes?
- Private/protected cannot be used for top-level classes (outer classes). They are only allowed for inner classes or members within a class.
- Top-level classes can only be public or default (package-private).
Example
package electronics;
public class Mobile // same class - private, public, protected, default
{
public Mobile()
{
System.out.println("Mobile constructor"); // default constructor is always in default access modifier
}
public static void main(String[] args)
{
Mobile mob = new Mobile();
mob.call();
mob.satellitecall();
}
protected void call()
{
System.out.println("calling");
}
protected void satellitecall()
{
System.out.println("satellitecall");
}
}
package electronics;
public class Samsung extends Mobile
{
public static void main(String[] args) // same package subclass - public, default, protected
{
Samsung s21 = new Samsung();
s21.call();
s21.satellitecall();
}
}
package grocery;
import electronics.Mobile;
public class Rice extends Mobile // different package subclass - protected, public
{
public static void main(String[] args)
{
Rice mob = new Rice();
mob.call();
mob.satellitecall();
}
}
Top comments (0)