Java字段隐藏
我想知道在2个Java类之间隐藏字段是什么意思,以及在运行代码时所得到的输出是什么意思?
我有一个带有a protected static boolean field =
false和一个子类的抽象类,该子类具有一个具有相同名称但不是静态的boolean字段并将其设置为true
。
如果我有此代码:
Superclass d = new subclass();
超类中的布尔字段和子类中的布尔字段的值是什么?子类字段是否保持false
上述分配后的状态?
回答:
static
成员永远不会被覆盖(当然也不会被非静态成员覆盖)。既然您应该这样访问它们:ClassName.member
也无需担心隐藏它们。
在您的情况下,您将Superclass
像这样访问字段:Superclass.field
。Subclass
实例字段如下:subclass.field
。如果你有,然而Subclass
在一个实例Superclass
像上面变量,此代码:d.field
将访问中定义的静态字段Superclass
,这将是false
你的情况。
但这不会更改Subclass
实例的值,它只是访问“错误的”成员!您可以通过将实例d
放回Subclass
变量中并field
再次读取来验证这一点。
以上是 Java字段隐藏 的全部内容, 来源链接: utcz.com/qa/403633.html