Java字段隐藏

我想知道在2个Java类之间隐藏字段是什么意思,以及在运行代码时所得到的输出是什么意思?

我有一个带有a protected static boolean field =

false和一个子类的抽象类,该子类具有一个具有相同名称但不是静态的boolean字段并将其设置为true

如果我有此代码:

Superclass d = new subclass();

超类中的布尔字段和子类中的布尔字段的值是什么?子类字段是否保持false上述分配后的状态?

回答:

static成员永远不会被覆盖(当然也不会被非静态成员覆盖)。既然您应该这样访问它们:ClassName.member也无需担心隐藏它们。

在您的情况下,您将Superclass像这样访问字段:Superclass.fieldSubclass实例字段如下:subclass.field。如果你有,然而Subclass在一个实例Superclass像上面变量,此代码:d.field将访问中定义的静态字段Superclass,这将是false你的情况。

但这不会更改Subclass实例的值,它只是访问“错误的”成员!您可以通过将实例d放回Subclass变量中并field再次读取来验证这一点。

以上是 Java字段隐藏 的全部内容, 来源链接: utcz.com/qa/403633.html

回到顶部