में विधि से अमूर्त सुपर-क्लास में कुछ निश्चित तरीकों को बुलाया जाता है, मेरे पास एक विधि doSomething()
विधि वाला एक सार सुपर क्लास ए है। A
की उप-वर्ग को doSomething()
लागू करना होगा, लेकिन कुछ सामान्य कोड भी हैं जिन्हें हर बार उप-वर्ग कॉल doSomething()
पर कॉल किया जाना चाहिए। मैं जानता हूँ कि यह इस प्रकार प्राप्त किया जा सकता:कैसे सुनिश्चित करें कि उप-वर्ग (जावा)
public class A {
public void doSomething() {
// Things that every sub-class should do
}
}
public class B extends A {
public void doSomething() {
super.doSomething();
// Doing class-B-specific stuff here
...
}
}
इस के साथ तीन मुद्दों, हालांकि होने लगते हैं:
- विधि हस्ताक्षर मिलान करने के लिए है, लेकिन मैं उप में कुछ वापस जाने के लिए चाहते हो सकता है क्लास विधियों केवल, लेकिन सुपर-क्लास
- में नहीं यदि मैं एडोसोमिंग() सार बना देता हूं, तो मैं ए में एक (सामान्य) कार्यान्वयन नहीं कर सकता। अगर मैं इसे सार नहीं बनाता, तो मैं नहीं कर सकता इसे लागू करने के लिए उप-वर्ग बल।
- यदि मैं सामान्य कार्यक्षमता प्रदान करने के लिए एक अलग विधि का उपयोग करता हूं, तो मैं उस विधि को लागू नहीं कर सकता। BdoSomething() सामान्य विधि को कॉल करता है।
कोई विचार कैसे तरीकों को लागू किया जाना चाहिए?
मैं 'शून्य' को 'सार्वजनिक शून्य' में कुछ जोड़ दूंगा() '। यह गारंटी देनी चाहिए कि इसे उप-वर्ग द्वारा ओवरराइड नहीं किया जा सकता है (जो बेवकूफ कोडर (मुझे 2 महीने में) कर सकता है)। – RowlandB