नहीं, हम टॉप-लेवल क्लास को प्राइवेट या प्रोटेक्टेड घोषित नहीं कर सकते। यह या तो पब्लिक या डिफ़ॉल्ट (कोई मॉडिफायर) हो सकती है। यदि इसमें मॉडिफायर नहीं है, तो इसे डिफ़ॉल्ट एक्सेस माना जाता है।
सिंटैक्स
// एक टॉप लेवल क्लास
public class TopLevelClassTest {
// क्लास बॉडी
}
- यदि टॉप-लेवल क्लास को प्राइवेट घोषित किया जाता है तो कंपाइलर शिकायत करेगा कि मॉडिफायर प्राइवेट यहाँ अनुमत नहीं है। इसका अर्थ है कि टॉप-लेवल क्लास प्राइवेट नहीं हो सकती, वही प्रोटेक्टेड एक्सेस स्पेसिफायर पर भी लागू होता है।
- प्रोटेक्टेड का अर्थ है कि मेंबर को उसी पैकेज में किसी भी क्लास द्वारा और सबक्लास द्वारा एक्सेस किया जा सकता है भले ही वे दूसरे पैकेज में हों।
- टॉप-लेवल क्लासेज में केवल पब्लिक, एब्स्ट्रैक्ट और फाइनल मॉडिफायर्स हो सकते हैं, और कोई क्लास मॉडिफायर परिभाषित न करना भी संभव है। इसे डिफ़ॉल्ट/पैकेज एक्सेसिबिलिटी कहा जाता है।
- हम इनर क्लासेस को प्राइवेट या प्रोटेक्टेड घोषित कर सकते हैं, लेकिन आउटर क्लासेस में यह अनुमत नहीं है।
- एक Java सोर्स फ़ाइल में एक से अधिक टॉप-लेवल क्लास परिभाषित की जा सकती हैं, लेकिन अधिकतम एक पब्लिक टॉप-लेवल क्लास घोषणा हो सकती है। फ़ाइल का नाम पब्लिक क्लास के नाम से मेल खाना चाहिए।
क्लास को प्रोटेक्टेड के रूप में घोषित करना
उदाहरण
protected class ProtectedClassTest {
int i = 10;
void show() {
System.out.println("Declare top-level class as protected");
}
}
public class Test {
public static void main(String args[]) {
ProtectedClassTest pc = new ProtectedClassTest();
System.out.println(pc.i);
pc.show();
System.out.println("Main class declaration as public");
}
}
ऊपर के उदाहरण में, हम क्लास को प्रोटेक्टेड घोषित कर सकते हैं, यह एरर थ्रो करेगा कि मॉडिफायर प्रोटेक्टेड यहाँ अनुमत नहीं है। इसलिए उपरोक्त कोड निष्पादित नहीं होता।
आउटपुट
modifier protected not allowed here
क्लास को प्राइवेट के रूप में घोषित करना
उदाहरण
private class PrivateClassTest {
int x = 20;
void show() {
System.out.println("Declare top-level class as private");
}
}
public class Test {
public static void main(String args[]) {
PrivateClassTest pc = new PrivateClassTest();
System.out.println(pc.x);
pc.show();
System.out.println("Main class declaration as public");
}
}
ऊपर के उदाहरण में, हम क्लास को प्राइवेट घोषित कर सकते हैं, यह एरर थ्रो करेगा कि मॉडिफायर प्राइवेट यहाँ अनुमत नहीं है। इसलिए उपरोक्त कोड निष्पादित नहीं होता।
आउटपुट
modifier private not allowed here