此代码打印" GenericAnimal",正如我期望它打印" PolymorphismTest"因为我创建了PolymorphismTest的对象。
item in getItems(searchText)
答案 0 :(得分:0)
它被称为字段“隐藏”或“阴影”。您有一个与父类中的字段同名的第二个字段。如果父级中的那个是private
,那么子类将无法访问它。
子类中的额外String name
字段占用其自己的内存和引用。您可能应该重新使用父类的字段,使其可见(即protected
或public
范围)或添加protected
或public
访问者和mutator子类可以调用的父类来访问和操作该字段。
答案 1 :(得分:0)
因为您正在访问该字段,而不是该函数。第二个字段隐藏超类中的那个,而不是覆盖。这与函数的行为不同,这可能就是你在这里寻找的东西:
i
答案 2 :(得分:0)
您的GenericAnimal引用不能引用其子类PolymorphismTest的属性。不能在java中覆盖属性值,只能覆盖方法。
注意: 这根本不是隐藏的。 (那将是另一个参考方向。)