Calling superclass from a subclass constructor in Java

后端 未结 4 925
执笔经年
执笔经年 2020-11-28 12:11

I am trying to create a constructor that takes a field as a parameter, then puts it in a field that is stored in a superclass. Here is the code I am using

pu         


        
4条回答
  •  忘掉有多难
    2020-11-28 12:37

    What you should do:

    Add a constructor to your super class:

    public Superclass {
        public SuperClass(String flavour) {
           // super class constructor
           this.flavour = flavour;
        }
    }
    

    In the Crisps class:

    public Crisps(String flavour, int quantity) {
        super(flavour); // send flavour to the super class constructor
        this.quantity = quantity;
    }
    

     

    Comments

    Some comments to your question:

    "In the superclass I have initialised the field with "

    private String flavour;
    

    This is not an initialization, it is a declaration. An initialization is when you set a value.

    "I am getting an error " flavour has private access in the superclass" but I believe this shouldn't matter as I am calling the accessor method that returns it to the field?"

    When you call a accessor (aka getter), it is ok - depends on the getter visibility. The problem in you code is the:

    this.flavour = 
    

    because flavour is not a field declared on Crisps class, but on the supper class, so you can't do a direct access like that. you should use my suggestion or declare a setter on the super class:

    public void setFlavour(String flavour) {
        this.flavour = flavour;
    }
    

    Then you can use it on the child class:

    public Crisps(String flavour, int quantity) {
        this.quantity = quantity;
        super.setFlavour(flavour);
    }
    

提交回复
热议问题