访问修饰符和隐藏Java字段

时间:2011-07-28 21:19:53

标签: java override field access-modifiers member-hiding

这是问题的后续行动:"java access modifiers and overriding"。前者通常涉及Java方法。为什么Java字段的灵活性?我们可以在继承的类中以他们的尊重缩小或扩大可见性,而不能使用“重写”或“隐藏”方法。

2 个答案:

答案 0 :(得分:3)

您永远不会覆盖字段 - 您总是隐藏它们。字段不是多态的...换句话说,如果你写:

Superclass x = new Subclass();
System.out.println(x.field);

并且SuperclassSubclass都声明了一个名为field的字段,无论如何总是使用超类,因为这是所有编译器都可以“看到的”

就个人而言,无论如何我都试图将变量保密:

答案 1 :(得分:3)

  

为什么java字段的灵活性

您不能通过扩展来使另一个类中的字段变为私有。当您在子类中创建一个新字段时,您只是隐藏了超类字段。

class Base {
    protected int x;
}

class Ext extends Base {
    private int x; // not the same as Base.x
}