मैंने कोर जावा, वॉल्यूम 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
उपयोग करने में सक्षम है। ऐसा लगता है कि मैंने पुस्तक से ऊपर उद्धृत किया है, विशेष रूप से वह हिस्सा जिसे मैंने बोल्ड में हाइलाइट किया है।
कोई मुझे बता सकते हैं अगर किताब गलत है या मेरी समझ गलत क्या है? अगर मेरी समझ गलत है तो क्या आप समझने के लिए एक बेहतर उदाहरण सुझा सकते हैं कि किताब का क्या अर्थ है?
हाँ आप निश्चित रूप से यह कर सकते हैं। –