मुझे बहुत सारे समान वर्ग बनाना है जिनके बीच केवल एक विधि अलग है। तो मुझे लगता है कि अमूर्त वर्ग बनाना इसे हासिल करने का एक अच्छा तरीका होगा। लेकिन जिस विधि को मैं ओवरराइड करना चाहता हूं (कहें, विधि foo()) का कोई डिफ़ॉल्ट व्यवहार नहीं है। मैं इस विधि को लागू करने के लिए सभी विस्तारित वर्गों को मजबूर करने के लिए किसी भी डिफ़ॉल्ट कार्यान्वयन को नहीं रखना चाहता हूं। मैं यह कैसे करु?जावा में ओवरराइड होने के तरीके को कैसे बल दें?
उत्तर
आप अपने आधार वर्ग पर एक सार विधि की जरूरत है:
public abstract class BaseClass {
public abstract void foo();
}
इस तरह, आप एक डिफ़ॉल्ट व्यवहार निर्दिष्ट नहीं करते हैं और आप गैर सार कक्षाएं BaseClass
से इनहेरिट मजबूर एक कार्यान्वयन निर्दिष्ट करने के लिए foo
के लिए।
आपकी बेस क्लास 'बेसक्लास' ** ** होना चाहिए ** होना चाहिए। –
@ द एलिट जेंटलमैन: हाँ! धन्यवाद! तय है कि। –
आह सही! मैं गलत धारणा के तहत था कि अमूर्त वर्गों के पास गैर-सार तत्व नहीं हैं। धन्यवाद! –
बस विधि सार बनाएं।
यह सभी उप-वर्गों को इसे कार्यान्वित करने के लिए मजबूर करेगा, भले ही इसे अमूर्त वर्ग के एक सुपर क्लास में लागू किया गया हो।
public abstract void foo();
सुपरक्लास परिदृश्य का उल्लेख करने के लिए धन्यवाद –
इस विधि abstract
करें।
आप एक अमूर्त वर्ग है, तो अपने विधि बनाने के
public abstract void foo();
तब सभी उपवर्गों foo
ओवरराइड करने के लिए होगा (मान लीजिए कि foo
सार रूप में अच्छी तरह करते हैं)।
बस आधार वर्ग में एक सार विधि के रूप में foo() को परिभाषित:
public abstract class Bar {
abstract void foo();
}
अधिक जानकारी के लिए The Java™ Tutorials (Interfaces and Inheritance) देखें।
- 1. सूचीदृश्य के पुनर्विक्रय को कैसे बल दें?
- 2. विंडोज इंडेक्सिंग "गतिविधि" को कैसे बल दें
- 3. NSToolBar सत्यापन को कैसे बल दें?
- 4. फॉर्म फोकस को कैसे बल दें?
- 5. इंस्टॉलर निष्पादन के आदेश को कैसे बल दें
- 6. डेटाबेस में लॉगिंग विफल होने पर अपवाद फेंकने के लिए nlog को कैसे बल दें?
- 7. ब्राउज़र में यूटीएफ -8 एन्कोडिंग को कैसे बल दें?
- 8. ग्राफविज़ में किनारों की स्थिति को कैसे बल दें?
- 9. jQuery के साथ होवर स्थिति को कैसे बल दें?
- 10. जावा में MigLayout में बढ़ने के लिए एक घटक को कैसे बल दें
- 11. emacs में सिंटैक्स-हाइलाइटिंग रीफ्रेश को कैसे बल दें?
- 12. एक gnumake फ़ाइल में त्रुटि को कैसे बल दें
- 13. फोर्टन शैली में numpy सरणी आदेश को कैसे बल दें?
- 14. एंड्रॉइड जीयूआई - अगली पंक्ति में बटन को कैसे बल दें?
- 15. सी # में निकास आवेदन को कैसे बल दें?
- 16. UIPopoverControllers के लिए ब्लैक सीमाओं को कैसे बल दें
- 17. फ़ाइल को हटाने के लिए कैसे बल दें?
- 18. स्पष्ट उपयोगकर्ता के कैश/कुकीज़ को कैसे बल दें?
- 19. सी # सशर्त निर्देशों के इंडेंटेशन को कैसे बल दें?
- 20. निर्देशिका पर HTTPS को कैसे बल दें और HTTPS प्रमाणीकरण
- 21. जावा में स्टेटिक तरीके
- 22. रनटाइम पर प्रतीक रिज़ॉल्यूशन को कैसे बल दें
- 23. LINQ: मूल्य आधारित संदर्भ को कैसे बल दें?
- 24. एंड्रॉइड एक्शनबार कंपैट पर ओवरफ्लो मेनू को कैसे बल दें?
- 25. फ्लैश बिल्डर मोबाइल ऐप पर परिदृश्य को कैसे बल दें
- 26. प्रत्येक संकलन पर संसाधन कंपाइलर को कैसे बल दें?
- 27. django प्रबंधन कमांड से त्रुटि रिपोर्टिंग को कैसे बल दें?
- 28. विशिष्ट क्रम में पुनरावृत्तियों को चलाने के लिए ओपनएमपी को कैसे बल दें
- 29. जावा में अधिभारित और ओवरराइड
- 30. सफारी रीडर में प्रत्येक छवि के बाद लाइन ब्रेक को कैसे बल दें?
टेम्पलेट विधि पैटर्न के कार्यान्वयन की तरह लगता है http://en.wikipedia.org/wiki/Template_method_pattern – Robin
यह उन मामलों के लिए एक उत्कृष्ट प्रश्न है जहां आप सभी उप-वर्गों को अपने माता-पिता को कॉल करना चाहते हैं। ऐसा लगता है कि अब तक के जवाबों को नहीं माना गया है। उदाहरण: सुनिश्चित करें कि प्रत्येक वर्ग में एक विधि को ओवरराइड करने की आवश्यकता है और माता-पिता को कॉल करें: '@override संरक्षित शून्य महत्वपूर्ण विधि() {super.importantMethod(); ...} ' – will