如果我有一个名为AmericanFender的子类扩展了Fender,而Fender扩展了超类BassGuitars,为什么会这样?
AmericanFender amFen = new AmericanFender();
System.out.println(amFen.brand);
时,amFen.brand等于“Fender”时无法解决问题
Fender fen = new Fender()
fen.brand = Fender;
相反,amFen.brand即将出现。我认为自从AmericanFender扩展了Fender之后,它继承了Fender的实例变量(那些是从BassGuitars继承的),只要它们是公开的?我显然在想继承错误,那么有人可以引导我朝着正确的方向前进吗?非常感谢!
答案 0 :(得分:1)
在继承中,AmericanFender
DOES继承Fender
的实例变量。这意味着它将与Fender
具有相同的字段。这并不意味着它们在这些字段中具有相同的值。它将有一个名为brand的空场,这就是你所看到的。
如果您希望它继承该值,您可以在Fender
类中创建一个方法:
public String getBrand() {
return "Fender";
}
然后你可以打电话:
AmericanFender f = new AmericanFender();
System.out.println(f.getBrand());
答案 1 :(得分:0)
如果您可以发布代码的整个部分,那么问题可能会更具体,但是您可能对继承产生误解的是,如果一个类继承了另一个类,那么子类会从超类继承相同的字段但是不是场内的价值。例如:
class kid extends parent {
如果您在父类中有一个名为haircolor的字段并且
parent.haircolor = brown;
然后孩子也有发色特征,但它不等于棕色。它等于 null ,直到你初始化它。