2015-10-18 12 views
5

मैंने कोर जावा, वॉल्यूम I - Fundamentals (8 वां संस्करण)> अध्याय 5: विरासत> 'संरक्षित एक्सेस' अनुभाग (पृष्ठ 205) पुस्तक से निम्नलिखित सीखा।क्या उप-वर्ग का ऑब्जेक्ट किसी अन्य उप-वर्ग के किसी अन्य ऑब्जेक्ट के संरक्षित फ़ील्ड को सुरक्षित कर सकता है?

वहाँ बार, जब आप केवल या कम सामान्य उपवर्गों के लिए एक विधि को प्रतिबंधित करने, उपवर्ग तरीकों एक सुपर क्लास क्षेत्र तक पहुँचने के लिए अनुमति देना चाहते हैं कर रहे हैं, लेकिन। उस स्थिति में, आप कक्षा श्रेणी को संरक्षित के रूप में घोषित करते हैं। उदाहरण के लिए, यदि सुपरक्लास कर्मचारी किराया फ़ील्ड को निजी के बजाय संरक्षित के रूप में घोषित करता है, तो प्रबंधक विधियां सीधे इसका उपयोग कर सकती हैं।

हालांकि, प्रबंधक वर्ग विधियां केवल कर्मचारी वस्तुओं के नहीं, प्रबंधक ऑब्जेक्ट्स के किराया के क्षेत्रफल के अंदर देख सकते हैं। ताकि आप संरक्षित तंत्र का गलत इस्तेमाल नहीं कर सकते हैं और फार्म उपवर्गों सिर्फ संरक्षित क्षेत्रों के लिए पहुँच प्राप्त करने के यह प्रतिबंध किया जाता है।

मैं इसे परीक्षण करने के लिए निम्नलिखित कोड लिखा था।

class Employee 
{ 
    protected String name; 

    public Employee(String name) { 
     this.name = name; 
    } 
} 

class Manager extends Employee 
{ 
    public Manager(String name) { 
     super(name); 
    } 

    public void peekName(Employee e) { 
     System.out.println("name: " + e.name); 
    } 
} 

class Executive extends Employee 
{ 
    public Executive(String name) { 
     super(name); 
    } 
} 

public class TestProtectedAccess 
{ 
    public static void main(String[] args) { 
     Employee e = new Employee("Alice Employee"); 
     Manager m = new Manager("Bob Manager"); 
     Executive ex = new Executive("Charles Executive"); 

     // Manager object accessing protected name of Employee object 
     m.peekName(e); 

     // Manager object accessing protected name of Executive object 
     m.peekName(ex); 
    } 
} 

कोड के उत्पादन में है:

$ java TestProtectedAccess 
name: Alice Employee 
name: Charles Executive 

प्रबंधक वस्तु m संरक्षित क्षेत्र अन्य कर्मचारी की name वस्तुओं e और ex उपयोग करने में सक्षम है। ऐसा लगता है कि मैंने पुस्तक से ऊपर उद्धृत किया है, विशेष रूप से वह हिस्सा जिसे मैंने बोल्ड में हाइलाइट किया है।

कोई मुझे बता सकते हैं अगर किताब गलत है या मेरी समझ गलत क्या है? अगर मेरी समझ गलत है तो क्या आप समझने के लिए एक बेहतर उदाहरण सुझा सकते हैं कि किताब का क्या अर्थ है?

उत्तर

2

के बाद से अपनी कक्षाओं में एक ही पैकेज में सभी, सुरक्षित है सार्वजनिक रूप में ही है।

संरक्षित संशोधक निर्दिष्ट करता है कि सदस्य केवल अपनी ही पैकेज में अपने वर्ग का एक उपवर्ग एक और पैकेज में पहुँचा जा सकता है और, इसके अलावा में (पैकेज-निजी के साथ के रूप में), द्वारा।

https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

+0

हाँ आप निश्चित रूप से यह कर सकते हैं। –

संबंधित मुद्दे