【发布时间】:2016-07-30 23:00:51
【问题描述】:
我正在输出
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?
如果我将return x 更改为return superClassMethod();,它似乎正确地从超类中拉出-1。那么为什么是方法而不是变量呢?
【问题讨论】:
-
SubClass 中
x的默认值为0,省略SubClass 中的减速,您将拥有99
标签: java oop inheritance superclass