这是对以下问题的跟进:“java access modifiers and overriding”。然而,前者通常处理 Java 方法。为什么 Java 字段具有灵活性?我们可以在继承的类中通过尊重他们来缩小或扩大可见性,而不能使用“覆盖”或“隐藏”方法。
问问题
1170 次
2 回答
3
你从不覆盖一开始的字段——你总是隐藏它们。字段不是多态的......换句话说,如果你写:
Superclass x = new Subclass();
System.out.println(x.field);
并且两者都Superclass
声明Subclass
了一个名为 的字段field
,无论如何它都将始终使用超类,因为这是编译器可以“看到”的所有内容。
就我个人而言,无论如何我都会尝试将我的变量保密......
于 2011-07-28T21:22:56.633 回答
2
为什么 java 字段的灵活性
您不能通过扩展将另一个类中的字段设为私有。当您在子类中创建新字段时,您只是隐藏了超类字段。
class Base {
protected int x;
}
class Ext extends Base {
private int x; // not the same as Base.x
}
于 2011-07-28T21:24:48.850 回答