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

标签 java eclipse overriding

我有一个接口(interface)I1,它定义了一种方法M1。另外两个类 C1C2 正在实现 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/

相关文章:

java - Android 项目中的文件应存储在何处以供 BufferedReader 访问?

java - 如何在 Eclipse 中删除模板

c++ - 如何自动更新重写方法的 *this 返回类型?

java - 使用 pdfBox 的横向 PDF

java - Thawte证书查询

java - 如何更改maven web项目的默认行为?

java - 正确覆盖 equals 方法

c# - 是否可以使用派生类型强制覆盖未标记为虚拟或抽象的成员?

java - 无法映射正则表达式 - java.lang.IllegalArgumentException : The number of capturing groups in the pattern segment

eclipse - 为什么 Eclipse 认为 Servlet 3.0 Web App 仍然是 Servlet 2.4 Web App?