Getter方法未返回对象构造函数中设置的值问题排查
问题解决:子类实例化后继承方法返回错误值
你的问题出在Tiger子类的构造函数调用了父类的无参构造,导致传入的名字参数没有传递给父类的带参构造,最终父类的nameOfAnimal被初始化为默认的"Unknown Animal"。
修正后的Tiger构造函数代码
public Tiger(String nameOfAnimal){ super(nameOfAnimal); // 调用父类带参构造,将传入的名字传递给父类 }
原理说明
当你执行Tiger tigerObject = new Tiger("Tiger")时:
- 传入的"Tiger"会被传递到Tiger构造函数的参数中
- 通过
super(nameOfAnimal)调用父类的带参构造,父类会将nameOfAnimal赋值为你传入的字符串 - 后续调用
getNameOfAnimal()时,就能返回正确的"Tiger"
如果需要在子类构造中添加额外的初始化逻辑,也可以保留扩展空间:
public Tiger(String nameOfAnimal){ super(nameOfAnimal); // 这里可以添加Tiger类特有的初始化代码 }
内容的提问来源于stack exchange,提问作者Joseph Loomis
相关产品推荐
相关产品推荐

