Access Specifiers in Java
1. Four Levels (beginner ladder!)
Who can see? private (me!) → default (package!) → protected (package + kids!) → public (world!). Default = NO word (package-private!).
2. Master Table (memorize — exam garanateed!)
public class Demo {
private int a; // self only!
int b; // default (package!)
protected int c; // package + children anywhere!
public int d; // everyone!
}
| Modifier | Same class | Same package | Child (other pkg) | World |
|---|---|---|---|---|
| private | Yes | No | No | No |
| default | Yes | Yes | No | No |
| protected | Yes | Yes | Yes | No |
| public | Yes | Yes | Yes | Yes |
3. Class-Level Rule (trap!)
Top-level class: ONLY public or default! (private/protected class = ERROR! Inner classes CAN use all four!).
// private class A {} // ERROR! (top-level!)
public class A {} // ok (file A.java!)
class B {} // ok (package-private!)
4. Best Practice (viva line!)
Fields private + getters/setters (encapsulation!). Methods public (API) / private (helper). Library hooks protected.
5. Exam Points
- Four-level table + program — 7 marks, very frequent.
- Default vs protected + class rule — 5 marks, favourite traps.