【发布时间】:2015-07-15 23:33:16
【问题描述】:
在下面的代码中,当我运行 Test2 时,为什么它打印 null 而不是 lol?似乎config 方法修改了Test 类的a 属性而不是Test2。
那么继承那些操纵私有属性的公有方法是什么意思呢,他们为什么要这样设计Java呢?
编辑:
不得修改Test 类。我想做的是重用config 方法。我为Test2 定义了一个私有属性a,但config 只是忽略它并使用Test 之一。方法不应该使用它所在类的属性而不是继承的超类的属性吗?
public class Test {
private String a;
public void config() {
a = "lol"
}
}
public class Test2 extends Test {
private String a;
public void print() {
config();
System.out.println(a);
}
public static void main(String[] args) {
print()
}
}
【问题讨论】:
-
因为它是继承的。
-
config方法 is 使用它所在类的属性,并且它is 在超类中。如果您可以通过让超类中的方法操作子类中的私有字段来破坏封装,那就不好了。
标签: java inheritance private public