我正在尝试创建一个构造函数,该构造函数将一个字段作为参数,然后将其放入存储在父类(super class)中的字段中。这是我正在使用的代码
public crisps(String flavour, int quantity) {
this.flavour = super.getFlavour();
this.quantity = quantity;
}
在父类(super class)中,我用
初始化了该字段private String flavour;
我有一个访问器方法
public String getFlavour() {
return flavour;
}
我收到错误“ flavor 在父类(super class)中具有私有(private)访问权限”,但我相信这应该不重要,因为我正在调用将其返回到字段的访问器方法?
最佳答案
你应该做什么:
向您的父类(super class)添加构造函数:
public Superclass {
public SuperClass(String flavour) {
// super class constructor
this.flavour = flavour;
}
}
在 Crisps 类中:
public Crisps(String flavour, int quantity) {
super(flavour); // send flavour to the super class constructor
this.quantity = quantity;
}
评论
对您的问题的一些评论:
“在父类(super class)中,我已使用“初始化该字段”
private String flavour;
这不是初始化,而是声明。初始化是指您设置一个值。
“我收到错误“ flavor 在父类(super class)中具有私有(private)访问权限”,但我相信这应该不重要,因为我正在调用将其返回到字段的访问器方法?”
当您调用访问器(又名 getter)时,这是可以的 - 取决于 getter 可见性。 您代码中的问题是:
this.flavour =
因为flavor不是在Crisps类上声明的字段,而是在supper类上声明的字段,所以你不能像这样直接访问。你应该使用我的建议或在父类(super class)上声明一个setter:
public void setFlavour(String flavour) {
this.flavour = flavour;
}
然后你可以在子类上使用它:
public Crisps(String flavour, int quantity) {
this.quantity = quantity;
super.setFlavour(flavour);
}
关于java - 在Java中从子类构造函数调用父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60227776/