在下面的代码中,为什么super仍然引用子类变量,而不是父类(super class)变量?
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);
}
}
最佳答案
什么子类变量?您还没有声明一个,因此 this.type
引用父类(super class)的变量。
如果您在父类(super class)和子类中都声明了 public String type;
,它将按照您期望的方式工作。但现在,您声明的唯一 type
变量是父类(super class)中的变量。
此外,像这样隐藏变量是不好的做法,因为它很容易让人混淆您的类型
的含义。
关于java - 为什么 super 不引用父类(super class)中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26261252/