से विरासत में मिली मूल रूप से, मेरे पास है:जावा उपवर्ग: कई निर्माताओं सार सुपर क्लास
public abstract class AbstractClass {
public AbstractClass(Type arg0, Type arg1, Type arg2) {
// do some stuff with all those args
}
public AbstractClass(Type onlyOneArg) {
// do different stuffs with this different arg.
}
protected someMethods() { /* ... */ }
}
और मैं उपवर्गों में कुछ समस्या है:
- पहले, मैं के सबसे -इन करने के लिए है मामलों- बेकार ढंग से रचनाकारों को फिर से लिखना। बहुत परेशान नहीं, आंखों के लिए थोड़ा गंदा है।
- और, अधिक महत्वपूर्ण, मुझे दोनों रचनाकारों को लागू करने के लिए मजबूर नहीं किया गया है (हालांकि दोनों प्रोग्राम में उपयोग किए जाते हैं)। मेरे वर्तमान उपवर्गों की
उदाहरण:
public class MyClass extends AbstractClass {
public MyClass(Type arg0, Type arg1, Type arg2) {
super(arg0, arg1, arg2);
}
public MyClass(Type onlyOneArg) {
super(onlyOneArg);
}
}
और
- मैं एक उपवर्ग के निर्माता में कुछ विशेष कोड लिखने के लिए अगर मैं चाहता हूँ में सक्षम होना चाहिए।
- मेरे पास बहुत सारे साझा कोड हैं जिन्हें मैं अमूर्त वर्ग में रखना चाहता हूं।
क्या मैं इसके बारे में कुछ कर सकता हूं? क्या जावा के बारे में मुझे कुछ पता नहीं है? या मेरा डिजाइन खराब है? या ..
सुनिश्चित नहीं है कि सवाल क्या है। क्या आप सभी सुपरक्लास रचनाकारों को लागू करने के लिए मजबूर होना चाहते हैं? आपके द्वारा बताई गई आवश्यकताओं के बारे में क्या है कि आप ऐसा नहीं कर सकते हैं? –
मुझे प्रश्न को सुधारने में खुशी होगी लेकिन मुझे पूरा यकीन नहीं है .. मेरा मतलब था कि मैं यह सुनिश्चित करना चाहता हूं कि प्रत्येक 'सार क्लास के उप-वर्ग में, दोनों निर्माता उपलब्ध हैं। कार्यक्रम में, मैं सटीक प्रकार के बिना दोनों रचनाकारों के साथ तत्काल हूं।मुझे केवल इतना पता है कि ऑब्जेक्ट एक 'सार क्लास' उपclass होगा। इसलिए मुझे यह सुनिश्चित करना होगा कि मैं हमेशा दोनों रचनाकारों का उपयोग कर सकूं। क्या यह और समझ में आता है? ... सूखी, अंग्रेजी में मेरे विचार व्यक्त करना मुश्किल है! – user978548
इसके अलावा, मैं यह भी सोच रहा था कि अगर जावा को स्वचालित रूप से 'सार क्लास' कन्स्ट्रक्टर का उपयोग करने के लिए संभव है, तो यह सबक्लास में परिभाषित नहीं है, लेकिन यह मेरी मुख्य चिंता नहीं है। – user978548