java - 想知道以下 Java 程序的输出

标签 java subclass extends superclass super

我正在处理一些过去的试卷,但我不确定输出。我想我不清楚extends和super。

public class Superclass{
    public boolean aVariable;

    public void aMethod(){
        aVariable = true;
    }
}

class Subclass extends Superclass {
    public boolean aVariable;

    public void aMethod() {
      aVariable = false;
      super.aMethod();
      System.out.println(aVariable);
      System.out.println(super.aVariable);
    }
}

我认为第二个输出是正确的,因为它引用父类(super class)并且它是一个对象。但是,我不确定第一个输出。它只是一个值并打印 false 还是它也是一个对象?

最佳答案

输出将是:

false
true

因为在您的子类中,aVariable默认为false(因此赋值aVariable = false;是不必要的) 。了解更多关于 Primitive Data Types default values .
Superclass中,您可以通过使用关键字super调用父类(super class)的方法来将aVariable初始化为true: super.aMethod();。了解更多关于 Accessing Superclass Members .

看看demo .

关于java - 想知道以下 Java 程序的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41485421/

相关文章:

java - 构造函数调用是否也进入堆栈?

c++ - 定义子类 (c++)

java - 无法从泛型方法返回对象

c# - 无法访问 C# 中父类(super class)的属性

class - 更改符合 'generate()' 的类的子类的 'SequenceType' 方法

php - 扩展时找不到类

javascript - 在 Vuex 模块中进行继承的方法

java - 不同数组之间切换的算子,内部更精准

java - 为什么Spring中的作用域会影响Spring中类的加载

java - 剪辑有时无法播放