如果我有一个子类AmericanFender扩展了Fender,而Fender扩展了超类BassGuitars,为什么会这样呢?AmericanFender amFen = new AmericanFender(); System.out.println(amFen.brand);
无法计算出等于“ Fender”的amFen.brand,Fender fen = new Fender()fen.brand = Fender;
取而代之的是amFen.brand为null。我以为自从AmericanFender扩展Fender以来,只要它们是公共的,它将继承Fender的实例变量(这些实例变量是从BassGuitars继承的)?我显然是在错误地考虑继承问题,因此有人可以引导我朝正确的方向发展吗?非常感激!
最佳答案
在继承中,AmericanFender
确实继承了Fender
的实例变量。这意味着它将具有与Fender
相同的字段。这并不意味着它将在这些字段中具有相同的值。它将看到一个空白字段,即brand(品牌),这就是您所看到的。
如果希望它继承值,则可以在Fender
类中创建一个方法:
public String getBrand() {
return "Fender";
}
然后您可以致电:
AmericanFender f = new AmericanFender();
System.out.println(f.getBrand());