Java 如何在Eclipse中找到正确的重写方法
我有一个接口Java 如何在Eclipse中找到正确的重写方法,java,eclipse,overriding,Java,Eclipse,Overriding,我有一个接口I1,它定义了一个方法M1。另外两类C1和C2正在实施I1和超车M1 在另一个类C3中,我引用了M1。现在我如何理解M1指的是C1\u M1还是C2\u M1 p.S我可以在调试代码时找到它。但是我正在寻找一些没有执行它的快捷方式。这是运行时多态性,所以您只能在运行时理解它 如果您知道程序的输入是什么,那么您就可以理解是哪个类实例引用 interface A{ } class B implements A{ } class C implements A{ } class
I1
,它定义了一个方法M1
。另外两类C1
和C2
正在实施I1
和超车M1
在另一个类C3
中,我引用了M1
。现在我如何理解M1
指的是C1\u M1
还是C2\u 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
方法将被调用
总之,您必须理解代码,识别输入,然后才能理解在运行时调用哪个类。否则,调试是最佳实践。这是运行时多态性,因此您只能在运行时理解它 如果您知道程序的输入是什么,那么您就可以理解是哪个类实例引用
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
方法将被调用
总之,您必须理解代码,识别输入,然后才能理解在运行时调用哪个类。否则,调试是最佳实践。这是运行时多态性,因此您只能在运行时理解它 如果您知道程序的输入是什么,那么您就可以理解是哪个类实例引用
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
方法将被调用
总之,您必须理解代码,识别输入,然后才能理解在运行时调用哪个类。否则,调试是最佳实践。这是运行时多态性,因此您只能在运行时理解它 如果您知道程序的输入是什么,那么您就可以理解是哪个类实例引用
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
方法将被调用
总之,您必须理解代码,识别输入,然后才能理解在运行时调用哪个类。否则,调试是最佳实践。如果您以这种方式创建对象
I1 i=new c1();
然后i.m1()
将调用c1类的m1方法
如果
然后i.m1()
将调用类c2的m1方法
如果您不知道对象是如何创建的,并且您只有引用,那么很抱歉,如果您以这种方式创建对象,您只能在运行时按原样找到它
I1 i=new c1();
然后i.m1()
将调用c1类的m1方法
如果
然后i.m1()
将调用类c2的m1方法
如果您不知道对象是如何创建的,并且您只有引用,那么很抱歉,如果您以这种方式创建对象,您只能在运行时按原样找到它
I1 i=new c1();
然后i.m1()
将调用c1类的m1方法
如果
然后i.m1()
将调用类c2的m1方法
如果您不知道对象是如何创建的,并且您只有引用,那么很抱歉,如果您以这种方式创建对象,您只能在运行时按原样找到它
I1 i=new c1();
然后i.m1()
将调用c1类的m1方法
如果
然后i.m1()
将调用类c2的m1方法
如果您不知道对象是如何创建的,并且您只有引用,那么很抱歉,您只能在运行时找到它,因为它是谁将对象放在那里?@LuísSoares我只看到引用,谁将对象放在那里?@LuísSoares我只看到引用,谁将对象放在那里?@LuísSoares我只看到引用谁把这个物体放在那里?@LuísSoares我只看到那里的参照物你是说bb=(B)o代码>而不是o=new B()代码>(和C
)相同?@James Ohhh,是的,James我已经编辑了我的代码,谢谢你指出我的错误。你是说bb=(B)o代码>而不是o=new B()代码>(和C
)相同?@James Ohhh,是的,James我已经编辑了我的代码,谢谢你指出我的错误。你是说bb=(B)o代码>而不是o=new B()代码>(和C
)相同?@James Ohhh,是的,James我已经编辑了我的代码,谢谢你指出我的错误。你是说bb=(B)o代码>而不是o=new B()代码>(与C
)相同?@James Ohhh,是的,James我已经编辑了我的代码,谢谢你指出我的错误。