निम्नलिखित वर्गकॉल सुपर वर्ग विधि स्वतः
class A{
public void init(){
//do this first;
}
public void atEnd(){
//do this after init of base class ends
}
}
class B1 extends A{
@Override
public void init()
{
super.init();
//do new stuff.
//I do not want to call atEnd() method here...
}
}
मैं कई B1, B2, ... बटालियन बच्चे वर्ग है जो पहले से ही विकसित कर रहे हैं है पर विचार करें। उनमें से सभी कक्षा ए का विस्तार करते हैं। यदि मैं उन सभी में एक नई कार्यक्षमता जोड़ना चाहता हूं, तो ऐसा करने के लिए सबसे अच्छी जगह कक्षा ए के भीतर एक विधि में परिभाषित की गई है लेकिन शर्त यह है कि विधि को हमेशा पहले ही स्वचालित रूप से कॉल किया जाना चाहिए बाल वर्ग समाप्त होता है init() विधि। ऐसा करने का एक मूल तरीका है कि बाल कक्षाओं की init() विधि के अंत में फिर से अंत() विधि कॉल जोड़ें। लेकिन क्या यह स्मार्ट तरीके से करने का कोई और तरीका है ??
यदि यह क्लास इनवेरिएंट की सुरक्षा के बारे में है, तो एओपी बहुत खराब समाधान होगा। –
यह "सामान" के बारे में है; इनवेरिएंट का उल्लेख नहीं किया गया है। और मुझे यकीन नहीं है कि आपूर्ति की गई जानकारी के आधार पर "बहुत गरीब" उपयुक्त है। – duffymo