如果我有一个子类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());

09-28 01:57