java - 为什么 super 不引用父类(super class)中的变量?

标签 java super

在下面的代码中,为什么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/

相关文章:

java - 找不到 java.util.Map 的类文件

java - 一个非常简单的 java 代码(获取星期几的日期),但我得到的结果非常奇怪,为什么?

java - 如何输出在 BST 中查找值所需的迭代次数?

Javascript 类调用 Super 并在回调中使用它

强制在构造函数中调用 super() 的子类的 Java 解决方法?

java - MySQL 无法更改正在主动写入的 TABLE

python - Python 3 中的 super() 是如何实现的?

java - 下面代码中的 super 指向什么?

java - 如何强制对 super 方法进行多态调用?

java - 使用 Java nio 写入文件元数据的问题