1

这是对以下问题的跟进:“java access modifiers and overriding”。然而,前者通常处理 Java 方法。为什么 Java 字段具有灵活性?我们可以在继承的类中通过尊重他们来缩小或扩大可见性,而不能使用“覆盖”或“隐藏”方法。

4

2 回答 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 回答