मान लीजिए कि हमारे पास एक सुपरक्लास है जैसे कि

public class Superclass  
{  
    public void method1() {  
        // do something 
    }  
}// end Superclass

और एक उपवर्ग जैसे

public class Subclass extends Superclass
{
    public void method1() {
        //override method1() of Superclass
    }

    public void method2() {
        // bla bla bla
    }
}// end Subclass

अब निम्नलिखित कोड पर विचार करें

public static void main( String[] args ) {
    Superclass obj = new Subclass();
}

मैं चर obj के माध्यम से method2 () को कॉल करने का तरीका ढूंढ रहा हूं। क्या इसे करने का कोई तरीका है? यदि हां, तो यह कार्य कैसे किया जा सकता है?

1
Hedayat Mahdipour 27 नवम्बर 2015, 02:18

2 जवाब

सबसे बढ़िया उत्तर

ऐसा करने के लिए, आपको इसे SubClass पर डालना होगा:

((Subclass) obj).method2();
2
Nir Levy 26 नवम्बर 2015, 23:21

जैसा कि ऊपर दी गई टिप्पणी बताती है, अगर आपको ऐसा करने की आवश्यकता है तो यह संकेत दे सकता है कि आपकी कक्षाएं सही ढंग से तैयार नहीं हैं।

अक्सर एक बेहतर तरीका यह होगा कि सुपरटेप में एक डिफ़ॉल्ट कार्यान्वयन प्रदान किया जाए और केवल उपप्रकार को लागू करने में ओवरराइड किया जाए।

उदाहरण के लिए:

public class Superclass {
  public void method1() {
    // method1 implementation
  }

  public void method2() {} // empty implementation
}

public class Subclass extends Superclass {
  @Override
  public void method2() {
    // do subclass stuff
  }
}

फिर अपनी कॉल साइट पर आपको बस करना होगा:

Superclass obj = new Subclass();
// Since the runtime type is Subclass, this calls Subclass's
// implementation of method2
obj.method2();
3
Daniel Pryden 26 नवम्बर 2015, 23:27