2011-03-15 10 views
9

यदि मैं एक अमूर्त वर्ग लिखता हूं, तो अमूर्त वर्ग में एक कक्षा घोंसला, क्या मुझे अमूर्त वर्ग के किसी भी उप-वर्ग में अपनी विधियों तक पहुंच होगी? मुझे कहीं भी जवाब नहीं मिल रहा है ..घोंसला वर्ग के साथ सार कक्षा, क्या यह संभव है?

+0

आप एक संरचनात्मक उदाहरण प्रदान कर सकता है? सुनिश्चित नहीं है कि क्या आपका मतलब कक्षा ए सार है, कक्षा बी ए के आंतरिक वर्ग (ए? स्थिर है?), और कक्षा सी एक बाहरी को बढ़ाता है? या बी बढ़ाता है? कृपया थोड़ा और विशिष्ट हो। –

उत्तर

9

बेशक, आंतरिक कक्षाओं में एक्सेस संशोधक फ़ील्ड और विधियों के समान नियमों का पालन करते हैं। इससे कोई फर्क नहीं पड़ता कि आपकी कक्षा अमूर्त या ठोस है, जब तक नेस्टेड क्लास या तो public, protected या उप-वर्ग एक ही पैकेज में है और आंतरिक वर्ग पैकेज निजी (डिफ़ॉल्ट पहुंच संशोधक) है, उपclass के पास पहुंच होगी यह।

public abstract class AbstractTest { 

    // all subclasses have access to these classes 
    public class PublicInner {} 
    protected class ProtectedInner {} 

    // subclasses in the same package have access to this class 
    class PackagePrivateInner {} 

    // subclasses do not have access to this class 
    private class PrivateClass {} 

} 
+0

बिल्कुल सही, उत्कृष्ट विवरण। – providence

0

नेस्टेड वर्ग में कम से कम सुरक्षित है, तो हम (जब तक तरीकों सार्वजनिक कर रहे हैं या हम एक ही पैकेज में हैं और वे निजी नहीं हैं) ने अपने तरीकों का उपयोग कर सकते हैं।

लेकिन आप इस बाहर अपने आप को आसानी से करने की कोशिश की हो सकता था :-)

1
class Abstract { 
    modifier1 class Nested { modifier2 int i = 0; } 
    Abstract() { 
     Nested n = new Nested(); 
     n.i = 1; 
    } 
} 

class Sub extends Abstract { 
    Sub() { 
     Nested n = new Nested(); 
     // have access as long you not choose "private" 
     // for `modifier1` or `modifier2`: 
     n.i = 5; 
    } 
} 
संबंधित मुद्दे