用父类的构造器,父类属性私有,下面我注释的为什么不可以那么写,为什么可以super(color,weight)这么写


public class Circle extends GeometricObject {

    private double radius;

    public Circle() {
        
    }

    public Circle(String color, double weight,double radius) {
//        super.color = color;
//      super.weight = weight;
        super(color,weight);
        this.radius = radius;
    }

父类的私有变量子类是不能访问的。必须通过父类提供的接口函数进行交互

public class Circle extends GeometricObject {
    private double radius;
    public Circle() {
        
    }
 
    public Circle(String color, double weight,double radius) {
//        super.color = color;
//      super.weight = weight;
        super(color,weight);
        this.radius = radius;
    }

super(color,weight);调用的是父类构造方法,父类构造方法是公有方法,对外可访问。
super.color不可以,是因为color是私有属性吧,对外不可访问,你修改为public属性就可以。

1.父类的私有属性是不能被继承的
2.不被继承但不代表子类没有这个属性,只是子类无法直接调用,必须通过父类提供的公共方法来调用

子类不能方法父类的私有属性和方法
https://blog.csdn.net/m0_64491107/article/details/122282191?spm=1001.2014.3001.5502

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632