如何在java

时间:2016-11-29 07:00:38

标签: java inheritance constructor

我有一个名为Perishable的父类,其构造函数如下所示:

    public Perishable(String name, int shelfLife,
        double price) {
    super(name);
    this.shelfLife = shelfLife;
    this.price = price;
}

在这个父类中,我需要其他子类的shelfLife变量。我有一个特殊的儿童班,虽然名为LongShelfLife,无论如何,保质期总是720天。因此,我被指示让类构造函数只接受两个参数,名称和价格(这是一个赋值所以我必须这样做)。

我想出了这段代码:

    public LongShelfLife(String name, double price) {
    name = super.name;
    price = super.price;
    }

但是编译器告诉我“隐式超级构造函数Perishable()是未定义的。必须明确地唤起另一个构造函数。”我觉得必须有一种方法只有一个构造函数只从父构造函数中获取特定参数,因为它的易用性,并且因为我需要能够这样做。唯一的问题是我不知道如何。如果有人能帮助我,我将不胜感激。

2 个答案:

答案 0 :(得分:3)

public class LongShelfLife extends Perishable {
    public LongShelfLife(String name, double price) {
        super(name, 720, price);
    }
}

答案 1 :(得分:0)

public class LongShelfLife extends Perishable {
    public LongShelfLife(String name, double price) {
        super(name, 720, price);           // you know beforehand the value of shelf life so use it to call super constructor explicitly
        this.name=name;
        this.price=price;
    }
}