Access Modifiers
Access modifiers क्या हैं
Access modifiers नियंत्रित करते हैं कौन class, field या method इस्तेमाल कर सकता है। ये आपको अंदरूनी details छिपाने और सिर्फ़ जो public होना चाहिए वो उजागर करने देते हैं। Java में चार स्तर हैं, पूरी तरह खुले (public) से पूरी तरह बंद (private) तक। ये encapsulation की बुनियाद हैं।
चार modifiers
- public — कहीं से भी accessible।
- private — सिर्फ़ उसी class में accessible।
- protected — उसी package में और subclasses द्वारा accessible।
- default (कोई keyword नहीं) — सिर्फ़ उसी package में accessible।
आप सबसे प्रतिबंधित स्तर चुनते हैं जो फिर भी आपके code को चलने दे — यह data सुरक्षित रखता है।
private और encapsulation
class Account {
private double balance = 0; // छिपा data
}
// Account a = new Account();
// a.balance = -500; // ERROR: balance private है
balance को private बनाना बाहरी code को उसे सीधे बदलने से रोकता है — जैसे negative balance set करना। यह encapsulation है: field छिपा और सुरक्षित है।
Getters और setters
class Account {
private double balance = 0;
public double getBalance() { // getter
return balance;
}
public void deposit(double amt) { // नियंत्रित setter
if (amt > 0) balance += amt; // validation!
}
}
Public methods private field तक नियंत्रित पहुँच देती हैं। deposit method balance बदलने से पहले amount validate करती है — जो आप public field से लागू नहीं कर सकते।
protected और default
- protected — तब इस्तेमाल जब subclasses (दूसरे packages में भी) को पहुँच चाहिए, पर public को नहीं।
- default — कोई modifier न लिखकर; member सिर्फ़ अपने package में दिखता है।
ये बीच के स्तर public और private से कम आम हैं, पर package और inheritance design को उपयोगी हैं।
त्वरित तुलना
| Modifier | उसी class | उसी package | Subclass | हर जगह |
|---|---|---|---|---|
| public | हाँ | हाँ | हाँ | हाँ |
| protected | हाँ | हाँ | हाँ | नहीं |
| default | हाँ | हाँ | नहीं | नहीं |
| private | हाँ | नहीं | नहीं | नहीं |
आम गलतियाँ
- सारे fields public बनाना। Fields private रखिए और methods से उजागर कीजिए।
- default को public से मिलाना। कोई modifier नहीं मतलब package-private, public नहीं।
- protected का ज़्यादा इस्तेमाल। इसे तभी इस्तेमाल कीजिए जब subclasses को सच में पहुँच चाहिए।
- Setters में validation छोड़ना। Setter का मक़सद set करने से पहले values जाँचना है।
सारांश
- Access modifiers नियंत्रित करते हैं कौन class member इस्तेमाल कर सकता है।
publicहर जगह खुला;privateसिर्फ़ उसी class।protectedsubclasses जोड़ता है; default सिर्फ़ package।- Fields private रखकर getters/setters से उजागर कीजिए — encapsulation।
- Setters private data बदलने से पहले values validate कर सकते हैं।
आगे, data hiding दोहराइए classes और objects से, या static keyword सीखिए।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
Java में access modifiers क्या हैं?
public (हर जगह), private (सिर्फ़ उसी class), protected (उसी package और subclasses), और default (उसी package)। ये आपके code की रक्षा करते हैं।public और private में क्या अंतर है?
public मतलब member कहीं से भी access हो सकता है। private मतलब सिर्फ़ उसी class से। Fields आमतौर पर private होते हैं, और public methods उन तक पहुँच नियंत्रित करती हैं।Encapsulation क्या है?
Default access modifier क्या है?
Getter और setter क्या है?
getName()), और setter एक public method है जो उसे बदलती है (जैसे setName())। ये private data तक नियंत्रित पहुँच देते हैं।