变量不是多态的。当您访问时
m.name,无论对象的执行时间类型如何,它都将 始终
使用
Mammal.name属于该对象的字段。如果需要访问
Zebra.name,则需要一个 编译时 类型为的表达式
Zebra。
该
makeNoise方法实际上被称为-执行时使用的实现方式 确实 取决于对象的类型。
请注意,如果您将所有字段都设为私有-无论如何这通常是个好主意-这最终不会成为问题。
这实际上是 隐藏 而不是阴影。有关隐藏的详细信息,请参见JLS第8.3
节;有关阴影的信息,请参见6.4.1节。我不能说我总是保持分歧…



