这是问题的后续行动:"java access modifiers and overriding"。前者通常涉及Java方法。为什么Java字段的灵活性?我们可以在继承的类中以他们的尊重缩小或扩大可见性,而不能使用“重写”或“隐藏”方法。
答案 0 :(得分:3)
您永远不会覆盖字段 - 您总是隐藏它们。字段不是多态的...换句话说,如果你写:
Superclass x = new Subclass();
System.out.println(x.field);
并且Superclass
和Subclass
都声明了一个名为field
的字段,无论如何总是使用超类,因为这是所有编译器都可以“看到的”
就个人而言,无论如何我都试图将变量保密:
答案 1 :(得分:3)
为什么java字段的灵活性
您不能通过扩展来使另一个类中的字段变为私有。当您在子类中创建一个新字段时,您只是隐藏了超类字段。
class Base {
protected int x;
}
class Ext extends Base {
private int x; // not the same as Base.x
}