想知道以下Java程序的输出

时间:2017-01-05 12:41:48

标签: java subclass extends superclass 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);
    }
}

我认为第二个输出是真的,因为它会引用超类,它是一个对象。但是,我不确定第一个输出。它只是一个值和打印错误还是一个对象?

4 个答案:

答案 0 :(得分:1)

输出将是:

false
true

因为默认情况下Subclass aVariable falseaVariable = false;,所以分配Superclass是不必要的)。详细了解Primitive Data Types default valuesaVariable中,您使用关键字超级true调用超类'方法,将super.aMethod();初始化为$(document).on('mouseup', 'span.label.select-label:eq(0)', function(){ alert('Maximum '+parseInt($(this).text(), 10)); }); $(document).on('mouseup', 'span.label.select-label:eq(1)', function(){ alert('Minimum '+parseInt($(this).text(), 10)); }); 。详细了解Accessing Superclass Members

查看demo

答案 1 :(得分:1)

由于它们都属于自己的类块,因此使用相同的名称并不重要。就像现在看起来一样,你将aVariable设置为false,对super的调用不会改变它,除了创建具有相同名称的另一个变量(新引用)并将其设置为true。所以预期的输出是

false
true

答案 2 :(得分:1)

输出将是:

false
true

super.aMethod()将执行制作SuperClass的aVariable = true

SubClass的

aVariable将保持false

答案 3 :(得分:0)

我进行了科学实验(复制粘贴并运行)并进行打印 假 真

更多信息:

If you overwrite a field in a subclass of a class, the subclass has two fields with the same name(and different type)?