मेरे पास एक सारणी वर्ग है जो सार्वजनिक क्षेत्र को कार्यान्वित करना चाहिए, यह फ़ील्ड एक इंटरफेस या एक अन्य सार है।जावा अमूर्त वर्ग फ़ील्ड ओवरराइड
कुछ इस तरह:
public abstract class SpecialContainer extends GenericContainer {
public SpecialChild child=new SpecialChild(); //PAY ATTENTION HERE!
}
जावा मुझे इस संकलित करने के लिए अनुमति देते हैं, और मुझे लगता है कि क्षेत्र SpecialContainer
में child
स्वचालित रूप से अधिक भार है:
public abstract class GenericContainer {
public GenericChild child;
}
public abstract class GenericChild {
public int prop1=1;
}
public abstract class SpecialChild extend GenericChild {
public int prop1=2;
}
अब मैं एक और विशेष वर्ग कंटेनर है GenericContainer
के क्षेत्र child
... प्रश्न हैं: क्या मैं इस पर सही हूं? बच्चे का स्वचालित 'ओवरलोडिंग' होगा?
और, अधिक महत्वपूर्ण सवाल है, अगर मैं इस तरह एक और वर्ग है:
public class ExternalClass {
public GenericContainer container=new SpecialContainer();
public int test() {
return container.child.prop1
}
}
test()
1 या 2 वापस आ जाएगी? मेरा मतलब है GenericContainer
कंटेनर फ़ील्ड क्या prop1
कॉल करेगा, जेनेरिक या विशेष? और क्या होगा यदि विशेष प्रो 1 को स्ट्रिंग के रूप में घोषित किया गया था (हाँ जावा मुझे इस मामले में भी संकलित करने की अनुमति देता है)?
धन्यवाद!
सं क्षेत्रों अधिरोहित नहीं मिलता, केवल तरीकों से करते हैं। –
तो यदि 'स्पेशल चाइल्ड' में मेरे पास एक तरीका है जो प्रो 1 का उपयोग करता है, तो उसे पहले कॉल पर क्या मिलेगा? 1 या 2? मैंने स्पेशल चाइल्ड से प्रोप 1 को आजमाया और निकालने के लिए मुझे स्पेशल चाइल्ड में एक विधि लिखने की अनुमति दी जो प्रोप 1 का उपयोग करता है अगर यह केवल जेनेरिक चाइल्ड में परिभाषित किया गया है ... तो मुझे लगता है कि एक प्रकार का अधिभार होता है ... – Alex
आप हमेशा इसे _running कोशिश कर सकते हैं । –