【发布时间】:2015-10-01 10:04:51
【问题描述】:
在下面的示例中,为什么字符串 b 打印 null 而字符串 c 打印“gg”。
如果我错了,请纠正我,每当子类 (BClass) 覆盖超类 (AClass) 的受保护方法(即 initClass())时。如果您实例化子类。超类必须使用子类指定的重写方法。
public class Example {
public class AClass {
private String a;
public AClass() {
initClass();
}
protected void initClass() {
a = "randomtext";
}
}
public class BClass extends AClass {
private String b = null;
private String c;
@Override
protected void initClass() {
b = "omg!";
c = "gg";
}
public void bValue() {
System.out.println(b); // prints null
System.out.println(c); // prints "gg"
}
}
public static void main(String[] args) {
Example.BClass b = new Example().new BClass();
b.bValue();
}
}
【问题讨论】:
标签: java inheritance overriding protected