मैं जानना चाहता हूं कि एक अमूर्त वर्ग के लिए एक कन्स्ट्रक्टर का उद्देश्य क्या है; क्योंकि हम अमूर्त कक्षाओं को तुरंत नहीं देते हैं, हमें कभी ऐसे निर्माता की आवश्यकता क्यों होगी?जावा में एक सार कक्षा के लिए एक निर्माता बनाने का उपयोग क्या है?
उत्तर
ऐसे समय होंगे जब आपके पास आवृत्ति चर के कुछ सामान्य प्रारंभिकरण होंगे जो सभी विरासत वर्गों को स्थापित करने की आवश्यकता है। जब आप इसे विस्तारित करते हैं तो आप एक अमूर्त वर्ग को तत्काल बनाते हैं और उस ठोस वर्ग में एक निर्माता होता है जो या तो अमूर्त वर्ग के निर्माता को पैरामीटर प्रदान करेगा।
उन्हें अभी भी उन वर्गों के रचनाकारों द्वारा बुलाया जा सकता है जो उस से प्राप्त होते हैं, जिससे अमूर्त वर्ग में एक कन्स्ट्रक्टर रखने के लिए कोड का अच्छा उपयोग किया जाता है।
यदि आपके पास एक अमूर्त कक्षा में प्रारंभिक अंतिम फ़ील्ड हैं, तो आपको उन्हें एक निर्माता में प्रारंभ करना होगा।
उदा।
abstract class A {
final int x;
}
एक निर्माता कि x
को आवंटित बिना संकलन नहीं होंगे।
यदि आपकी कक्षा एक कन्स्ट्रक्टर घोषित नहीं करती है, तो जावैक आपके लिए कोई तर्क नहीं देगा, आपके लिए कुछ भी नहीं करेगा। फिर, जब आपका उप-वर्ग प्रारंभ होता है, तो वह जेनरेट किए गए नो-ऑप कन्स्ट्रक्टर को कॉल करेगा और जीवन अच्छा होगा।
हालांकि, यदि आपकी कक्षा किसी भी निर्माता को घोषित करती है, तो जावा आपके लिए एक नहीं बनायेगा। उस स्थिति में, उप-वर्ग निर्माता को स्पष्ट रूप से मूल वर्ग के निर्माता को कॉल करने की आवश्यकता होती है। अन्यथा, उपर्युक्त उत्तर का उल्लेख करते हुए, आप अभिभावक वर्ग के सदस्यों को प्रारंभ करने में असफल हो जाएंगे।
सार वर्गों के लिए रचनाकारों का उपयोग उप-वर्गों द्वारा किया जाता है (super(params)
का उपयोग करके उपclass रचनाकारों से आमंत्रित)।
आपको यह स्पष्ट करने के लिए इन रचनाकारों को protected
बनाना चाहिए।
आप अमूर्त वर्गों को तुरंत चालू नहीं करते हैं लेकिन जब सबक्लस तत्काल होता है तो कन्स्ट्रक्टर को बुलाया जाता है।
उपयोग सामान्य विशेषताओं यानी प्रारंभ करने के लिए किया जा सकता है।
import java.util.List;
import java.util.ArrayList;
abstract class BaseClass {
protected List list; // visible from subclasses
public BaseClass() {
System.out.println("to abstract...");
// common initialization to all subclasses
list = new ArrayList();
list.add("a");
list.add("a");
list.add("a");
}
}
class ConcreteClass extends BaseClass {
public ConcreteClass(){
// The list is initialized already
System.out.println("now it is concrete and the list is: = "+ this.list);
}
}
class TestAbstractClass {
public static void main(String [] args) {
BaseClass instance = new ConcreteClass();
}
}
आउटपुट
$ java TestAbstractClass
to abstract...
now it is concrete and the list is: = [a, a, a]
को डुप्लिकेट सामान्य ज्ञान/व्यवहार।
उदा। एक कार: आपकी सभी कारों का निर्माण शरीर और चार पहियों और इंजन से किया जाएगा। तो आप शरीर(), व्हील (int x), इंजन() जैसे कार्यों को कॉल करके अमूर्त कार वर्ग के लिए निर्माता में निर्माण का यह हिस्सा करते हैं। प्रत्येक विशेष कार वर्ग में बॉडी(), व्हील() और इंजन() का अपना कार्यान्वयन होगा - लेकिन वे सभी कार से निर्माण करने के लिए एक ही कदम उठाएंगे, इसलिए उनमें से प्रत्येक में उन चरणों को डुप्लिकेट करने की आवश्यकता नहीं है कक्षाएं। इस मामले में आप पूर्वजों में उस सामान्य व्यवहार को लागू करते हैं।
मैं मानता हूं, रचनाकारों को यह माना जाता है कि उदाहरण होंगे। यदि आपके पास बहुत सामान्य कोड है तो आप एक निर्माता बनाने के बारे में सोच सकते हैं लेकिन इसे init()
विधि में रखना बेहतर है।
यह बुरी सलाह है, तो प्रत्येक इनहेरेटिंग क्लास को सुपर कॉल करने की याद रखने की आवश्यकता होती है।init() और यह गन्दा तेजी से हो जाता है, यह गैर मानक और वास्तव में बुरी सलाह है। –
- 1. सार कक्षा निर्माता
- 2. एक सार बेस कक्षा
- 3. सार कक्षा और एक मिक्सिन के बीच क्या अंतर है?
- 4. इंटरफेस या एक सार कक्षा: किस का उपयोग करना है?
- 5. वापसी के लिए एक निर्माता का उपयोग
- 6. कक्षा बनाने के लिए प्रतिबिंब का उपयोग करें (एक गतिशील फ़ाइलहेल्पर क्लास बनाने के लिए)
- 7. .NET: क्या एक कक्षा के गुणों को प्रतिलिपि बनाने के लिए एक कक्षा है
- 8. जावा एक निर्माता
- 9. एक सामान्य निर्माता के लिए उपयोग केस क्या है?
- 10. सार विधि जो व्युत्पन्न कक्षा का एक उदाहरण देता है
- 11. NullPointerException जब सार निर्माता
- 12. जावा में एक समोच्च साजिश बनाने के लिए एक अच्छी (मुफ्त) लाइब्रेरी क्या है?
- 13. स्कैला विस्तारित सार कक्षा
- 14. जावा में एक स्थिर निर्माता के लिए तर्क पारित करें?
- 15. jQuery प्लगइन एक तत्व एक और कक्षा बनाने के लिए?
- 16. सी # सार कक्षा ऑपरेटर अधिभार
- 17. कोक में एक निर्माता क्या है?
- 18. कक्षा सामान्य बनाने का क्या मतलब है?
- 19. इंटरफ़ेस/सार कक्षा
- 20. कक्षा में एक निर्माता (ओं) पर कूदने का सबसे तेज़ तरीका क्या है?
- 21. क्या स्थिर वर्ग के अंदर स्वयं के उदाहरण बनाने के लिए कक्षा के लिए सुरक्षित है?
- 22. जावा का उपयोग [इंटरफेस/सार कक्षाएं]
- 23. एक निर्माता पर एक स्थिर संशोधक का मतलब क्या है?
- 24. का उपयोग करते हुए 'इस' एक निर्माता
- 25. जावा में कक्षा का आविष्कार क्या है?
- 26. क्या खाली कक्षा के निर्माता को वास्तव में किसी भी स्मृति का उपयोग करना है?
- 27. एक निर्माता
- 28. MustInherit और सार कक्षा
- 29. इसे बनाने के लिए निर्माता स्पष्ट
- 30. आप एक सार कक्षा और इंटरफ़ेस का उपयोग करने के बीच कैसे निर्णय लेते हैं?
एक उदाहरण javax.swing.AbstractAction –