如何在Eclipse中找到正确的重写方法

时间:2015-02-10 12:10:27

标签: java eclipse method-overriding

我有一个接口I1,它定义了一个方法M1。其他两个类C1C2正在实施I1并覆盖M1

在另一个班级C3中,我引用了M1。现在,如果M1指的是C1_M1C2_M1,我将如何理解?

P.S我可以在调试代码时找到它。但我正在寻找一些捷径而不执行它。

2 个答案:

答案 0 :(得分:2)

它是运行时多态,因此您只能在运行时理解它。

如果您知道程序的输入是什么,那么您可以了解哪个类实例引用。

interface A{

}

class B implements A{

}

class C implements A{

}

class Main{

  public static void main(String args[]){

    // input
    Object o = new B();  // just assume your logic give you object B. 

    if(o instanceof B){
       B b = (B) o;
     // invoke methods 
    }else if(o instanceof C){
      C c = (C) o;
     // invoke methods
    }
  }

}

在上面的代码中,您可以理解将调用类B方法。

总结是 - 您必须了解您的代码,识别输入,然后您才能理解在运行时调用哪个类。否则调试是最佳做法。

答案 1 :(得分:1)

如果您以这种方式创建对象

I1 i=new c1();

然后i.m1()将调用class c1

的m1方法

如果

  I1 i=new c2();

然后i.m1()将调用class c2

的m1方法

如果您不知道如何创建对象并且您只有引用,那么抱歉,您只能在运行时找到它Run time Polymorphism