做这样的事情:
class Foo {
Foo foo;
...
}
class Bar extends Foo {
...
}
class Baz extends Foo {
Bar foo;
...
}
有效,但我不确定在课程Baz
中,Bar foo
是否实际上从父类Foo foo
替换了Foo
的实例。事实上,在Eclipse调试器中,似乎在Baz
实例上,我们同时拥有Foo foo
和 a Bar foo
。
如果我没有得到答案,我会稍微测试一下。我希望能够使用Foo foo
“覆盖”Bar foo
。
答案 0 :(得分:1)
不,你不是替换 foo
类中的Foo
字段,你只是声明一个新的 shadow 该声明(即仅在foo
内使用Baz
将引用Bar
字段。
您始终只需将Bar
个实例分配给Foo foo
变量。