需要有关继承逻辑的帮助

时间:2016-04-23 00:26:12

标签: java inheritance

如果我有一个名为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继承的),只要它们是公开的?我显然在想继承错误,那么有人可以引导我朝着正确的方向前进吗?非常感谢!

2 个答案:

答案 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 ,直到你初始化它。