यह एक अजीब शब्द है, इसलिए मैं माफी माँगता हूँ अगर यह एक डुप्लिकेट है।
कहो मेरे पास एक क्लास है foo
विधि के साथ a
उस कॉल विधि b
:
public class foo
{
public void a()
{
b();
}
public void b()
{
gamma();
}
}
अब मेरे पास एक उपवर्ग है bar
वह फैलता है foo
public class bar extends foo
{
@Override
public void b()
{
theta();
}
}
अगर मैं फोन करता हूँ bar.a()
, मर्जी a
उपयोग b
सुपरक्लास से विधि या b
उपवर्ग से विधि? वह है, इच्छा bar.b()
अंजाम देना gamma
या यह निष्पादन को समाप्त करेगा theta
?
उत्तर:
उत्तर № 1 के लिए 1यह उपवर्ग से विधि b का उपयोग करेगा। यह ओवरराइडिंग विधियों का बिंदु है। अपने माता-पिता के लिए एक उपवर्ग एक विधि के अधिक विशिष्ट कार्यान्वयन बनाने के लिए स्वतंत्र है। जब ओवरलैड विधि को उपवर्ग पर कॉल किया जाता है, तो सुपर क्लास की विधि के स्थान पर इसकी विशेष विधि का उपयोग किया जाएगा।
जवाब के लिए 0 № 2
f मैं बार.ना () कहता हूं, सुपरक्लास या बी से बी पद्धति का उपयोग करेगा उपवर्ग से विधि? यही है, बार.बी. () अंत में गामा निष्पादित करेगा या यह थीटा को अंजाम देगा?
यह उपयोग करेगा bar.b()
तरीका। इसी का परिणाम है गतिशील प्रेषण.