gpt4 book ai didi

java - 我不明白 'this' 与父类(super class)一起使用

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:53:03 26 4
gpt4 key购买 nike

我有两个类和一个接口(interface),如下所示。快速总结:Winterface 接口(interface)、Big 类、扩展 Big 并实现 Winterface 的 Little 类。

public interface Winterface {}


public class Big {

public int hello = 88;

public Big() {}

public void theMethod() {
System.out.println ("Big was here: " + (this instanceof Winterface) + ", " + this.hello);
}
}

public class Little extends Big implements Winterface{

private boolean hello = true;
public Little(){}

public void theMethod() {
super.theMethod();
System.out.println("Little was here: " + hello);
}

public static void main(String [] args) {
Little l = new Little();
l.theMethod();
}
}

当我在 Little 中执行 main 时,我得到以下输出

大在这里:真实,88这里很少:是的

我的问题是,怎么可能

1) (this instanceof Winterface) 返回 true 但是

2) this.hello 是 88?如果 this.hello = 88,则 this = Big,这不是 Winterface 的实例。

我不明白这是怎么可能的,提前谢谢

编辑:感谢我现在理解的每个人,“this”指的是 little,它是一个 Big 并且实现了 Winterface。由于该方法被称为 super.theMethod(),可用变量“hello”是 Big 中的变量,即使“this”指的是 little。

最佳答案

this 只能是一个类。但是 this.hello 是该类可访问的字段。

因为 this 只能是一个类,所以它是一个 Little,它有一个父级 Big 并实现了 Winterface当您在其父级中调用一个方法时,它只能看到 hello 它所看到的。

即Java 支持方法的多态性,但不支持字段。

关于java - 我不明白 'this' 与父类(super class)一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11743703/

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