gpt4 book ai didi

java - Runtime如何选择外部类方法和父类(super class)方法的调用方式?

转载 作者:行者123 更新时间:2023-12-02 03:38:57 24 4
gpt4 key购买 nike

我注意到以下情况:内部类正在调用它的父类(super class)和外部类中存在的方法。代码如下:

 public class Main
{

class Inner extends InnerBase{
public void callMethod(){
method();
}
}

void method(){
System.out.println ("Called Main's method");
}

class InnerBase{
void method(){
System.out.println ("Called InnerBase's method");
}
}
}

现在,当调用 callMethod() 时,它会调用父类(super class)的方法并打印“Called InnerBase's method”。如果我尝试从 IDE (Eclipse) 在 callMethod() 中调用的 method() 上“打开声明”,那么它将转到外部类中的方法。令人困惑的是哪一个才是真实的。您能否建议或提供一些 Material 来解释在外部类和父类(super class)中选择同名执行方法的情况。预先感谢您。

最佳答案

通过使用 qualified this (JLS §15.8.4。限定这一点),您可以毫无疑问地指定所选方法。

public void callMethod()
{
Main.this.method();
}

规则很简单:它将始终选择最接近的方法。

InnerBase.method() 是它自己的方法的一部分。所以这比 Main.method() 更接近,因为 Main.method() 是另一个不相关类的一部分。如果您在 Inner 中有另一个 method(),那么它会选择该方法,因为它位于同一个类中。

关于java - Runtime如何选择外部类方法和父类(super class)方法的调用方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13744295/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com