首页 > 解决方案 > 创建空的子类构造函数

问题描述

public class Monitor extends Peripheral {
    public Monitor(){
        super();
    }
    public Monitor (String name,String maker, int age, int price,String type,int size,String res,String ports){
        super(name,maker,age,price);
        this.type = typel
        this.size = size;
        this.res = res;
        this.ports = ports;
    }
}

这是子类。我想制作它以便我可以创建一个监视器对象而不给它任何参数。这些是其父母的班级:

public class Product {
    protected String name, maker;
    protected int age,price;
    public Product(){}
    public Product(String name,String maker, int age, int price){
        this.name = name;
        this.maker = maker;
        this.age = age;
        this.price = price;
    }
}
public class Peripheral extends Product {
    //basically nothing here
    private static double discount = 0;
    public static void setDiscount(double disc){
        discount = disc;
    }
    public static double getDiscount(){
        return discount;
    }
}

编译器说:错误:类 Peripheral 中的构造函数 Peripheral 不能应用于给定类型;极好的(); 必需:String、String、int、int 找到:无参数

标签: javaclassinheritanceconstructor

解决方案


首先,你这里有一个错字:

public Monitor (String name,String maker, int age, int price,String type,int 
size,String res,String ports){
    super(name,maker,age,price);
    this.type = typel <--- here(nasty semi-colons)

我认为您必须在监视器对象之前强制创建一个产品对象,因为您将丢失监视器试图获取的那些超级参数。

一种解决方法是,您可能想要创建另一个没有 super(params); 的构造函数。这样它就可以摆脱您遇到的错误。

因此,您应该执行以下操作,而不是您的构造函数:

public Monitor (String type,int size,String res,String ports){
    this.type = type;
    this.size = size;
    this.res = res;
    this.ports = ports;
}

希望这能解决您的问题!


推荐阅读