我正在尝试初始化子类中的基类属性,但出现错误
我试图让这个子类 Circle 继承父类 Shapes 的特征。我希望 Circle 类接受颜色字符串,但我一直收到错误消息。
class Circle extends Shapes {
private int radius;
public Circle(int radius, String Colour) {
this.radius = radius;
this.colour = Colour;
}
public double getArea() {
return Math.PI * radius * radius;
}
}
我得到的错误是:
“颜色”在“形状”中有私有访问权限
回答
我得到的错误是“颜色”在“形状”中有私人访问权限
因为colour确实是private:
private String colour = "Red";
并Circle试图直接访问该字段:
this.colour = Colour;
如果你想从外部Shapes(例如 in Circle)设置它,那么你可以使用你的 setter 方法。例如:
public Circle(int radius, String Colour) {
this.radius = radius;
this.setColour(Colour);
}
另一种选择可能是创建该字段,protected而不是private让继承类可以直接访问它。但是除非有令人信服的理由这样做,否则通常最好保留字段private并允许使用 getter/setter 来访问它们。因为在这种情况下有一个publicsetter,所以使用它很简单。
(顺便说一句,考虑将变量的名称从 更改Colour为colour以更好地符合 Java 命名标准。)