你应该做什么:
将构造函数添加到您的超类:
public Superclass {
public SuperClass(String flavour) {
// super class constructor
this.flavour = flavour;
}
}
在薯片类中:
public Crisps(String flavour, int quantity) {
super(flavour); // send flavour to the super class constructor
this.quantity = quantity;
}
评论
对您的问题的一些评论:
“在超类中,我已经用”初始化了该字段
private String flavour;
这不是初始化,而是声明。初始化是在您设置一个值时。
“我收到一个错误”味道在超类中有私有访问权限”但我相信这不重要,因为我正在调用将其返回到字段的访问器方法?”
当您调用访问器(又名 getter)时,没关系 - 取决于 getter 的可见性。您代码中的问题是:
this.flavour =
因为 flavor 不是在 Crisps 类上声明的字段,而是在 supper 类上声明的字段,所以你不能像这样直接访问。你应该使用我的建议或在超类上声明一个设置器:
public void setFlavour(String flavour) {
this.flavour = flavour;
}
然后你可以在子类上使用它:
public Crisps(String flavour, int quantity) {
this.quantity = quantity;
super.setFlavour(flavour);
}