我正在尝试初始化子类中的基类属性,但出现错误

我试图让这个子类 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,所以使用它很简单。

(顺便说一句,考虑将变量的名称从 更改Colourcolour以更好地符合 Java 命名标准。)


以上是我正在尝试初始化子类中的基类属性,但出现错误的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>