gpt4 book ai didi

java - 为什么我不继承父类(super class)变量?

转载 作者:行者123 更新时间:2023-11-29 09:52:30 24 4
gpt4 key购买 nike

我正在输出

SubClass subClass = new SubClass(4);
System.out.println(subClass.getVal());

这两个类:

public class SuperClass {
public int x = 99;

public int superClassMethod() {
return -1;
}
}


public class SubClass extends SuperClass {
public int x;

public SubClass(int value) {
x = value;
}

public int getVal() {
return x;
}
}

这会按预期输出 4。但是假设我在 SubClass 构造函数中注释掉了行 x = value 。为什么它输出 0(我假设未初始化变量的默认值)而不是 99,继承自父类(super class)?

如果我将 return x 更改为 return superClassMethod(); 它似乎正确地从父类(super class)中提取了 -1。那么为什么是方法而不是变量呢?

最佳答案

当变量在不同范围内具有冲突的名称时,它总是使用最近范围内的变量,即使它尚未设置为任何内容。

为了区分其他作用域中的变量,在变量前面加上thissuper:

public class SuperClass {
protected int x;
}
public class SubClass extends SuperClass {
private int x;
public SubClass(int x) {
x = 2; // sets the parameter variable
this.x = 2; // sets the instance variable
super.x = 2; // sets the super class' instance variable
}
}

关于java - 为什么我不继承父类(super class)变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36520636/

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