जावा में एक उपयोगी सुविधा एक सदस्य विधि को अंतिम रूप में घोषित करने का विकल्प है, ताकि इसे वंश वर्गों में ओवरराइड नहीं किया जा सके। सदस्य चर के लिए कुछ समान है?जावा: किसी सदस्य चर के ओवरराइड को रोकें
class Parent {
public final void thisMethodMustRemainAsItIs() { /* ... */ }
public String thisVariableMustNotBeHidden;
}
class Child extends Parent {
public final void thisMethodMustRemainAsItIs() { /* ... */ } // Causes an error
public String thisVariableMustNotBeHidden; // Causes no error!
}
संपादित करें: माफ करना, मैं परिदृश्य के बारे में अधिक विस्तार से बता देना चाहिए: मैं माता पिता के वर्ग में एक चर, उस बच्चे के वर्गों (इसलिए यह निजी नहीं होना चाहिए) के द्वारा अद्यतन किया जाना चाहिए है। हालांकि, एक बच्चे के वर्ग ही नाम के साथ एक चर बनाता है, तो यह सोचेंगे कि यह माता पिता के चर को अपडेट किया गया है, भले ही यह अपने आप प्रतिलिपि अद्यतन:
class Parent {
protected String myDatabase = null; // Should be updated by children
public void doSomethingWithMyDatabase() { /* ... */ }
}
class GoodChild extends Parent {
public GoodChild() {
myDatabase = "123";
doSomethingWithMyDatabase();
}
}
class BadChild extends Parent {
protected String myDatabase = null; // Hides the parent variable!
public BadChild() {
myDatabase = "123"; // Updates the child and not the parent!
doSomethingWithMyDatabase(); // NullPointerException
}
}
यह वह जगह है जो मैं रोकना चाहते हैं।
उन्हें अंतिम accessors साथ काम नहीं करेंगे? – soulcheck