gpt4 book ai didi

java - 尝试理解 super() 行为

转载 作者:行者123 更新时间:2023-12-01 07:03:26 25 4
gpt4 key购买 nike

我正在学习 java 认证,并且遇到了这段代码。

class Feline {
public String type = "f ";
public Feline() {
System.out.print("feline ");
}
}
public class Cougar extends Feline {
public Cougar() {
System.out.print("cougar ");
}
public static void main(String[] args) {
new Cougar().go();
}
void go() {
type = "c ";
System.out.print(this.type + super.type);
}
}

当我运行它时,我得到“feline cougar c c”,所以我明白为什么它在后面返回 feline 和 cougar,但是为什么 super.type 引用 Cougar 对象而不是 Feline 对象?

我看到了this post但这并没有真正启发我。

最佳答案

super.type 只是引用与 this.type 相同的变量...仅涉及一个对象,因此只有一个字段。

当您创建子类的实例时,它不会创建两个单独的对象,一个用于父类(super class),一个用于子类 - 它会创建一个可以被视为父类(super class)或子类的对象。它有一组字段。在本例中,您有一个字段 (type),其最初值为 "f ",但后来其值更改为 "c ".

关于java - 尝试理解 super() 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34431535/

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