我有一个接口(interface)I1
,它定义了一种方法M1
。另外两个类 C1
和 C2
正在实现 I1
并覆盖 M1
。
在另一个类C3
中,我引用了M1
。现在我如何理解 M1
是指 C1_M1
还是 C2_M1
?
P.S
我可以在调试代码时找到它。但我正在寻找一些快捷方式而不执行它。
最佳答案
它是运行时多态性,因此您只能在运行时理解它。
如果您知道程序的输入是什么,那么您就可以了解来自哪个类实例引用。
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
方法。
总而言之 - 您必须理解您的代码,识别输入,然后您才能理解在运行时将调用哪个类。否则调试是最佳实践。
关于java - 如何在 Eclipse 中找到正确的重写方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28431336/