我有以下Java代码,class Animal { private String name="Animal"; public String getName() { return name; }}class Cat extends Animal { private String name = "Cat";}public class Test { public static void main(String[] args) { Cat cat = new Cat(); System.out.println(cat.getName()); }}运行该代码后,我得到了输出Animal,但我认为应该是Cat。getName在Cat像这样重写方法之后,我得到了Cat。@Overridepublic String getName() { return name;}那是因为调用一个继承下来(不是凌驾于)方法的一个子类的实例,就像 cat.getName() 等于调用super.getName()(所以我得到Animal的,而不是Cat在第一种情况)?还是因为实例变量隐藏的奇怪行为(我不太确定)?
添加回答
举报
0/150
提交
取消