Создание пустого конструктора дочернего класса - PullRequest
0 голосов
/ 04 мая 2018
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;
    }
}

Компилятор говорит: ошибка: конструктор Периферия в классе Периферия не может быть применена к данным типам; супер(); требуется: String, String, int, int найдено: без аргументов

Ответы [ 3 ]

0 голосов
/ 04 мая 2018

Peripheral не наследует конструктор от Product, вам необходимо объявить его явно:

public class Peripheral extends Product {

    public Peripheral(String name,String maker, int age, int price) {
        super(name,maker,age,price);
    } 

    //....
}
0 голосов
/ 04 мая 2018

Прежде всего, у вас есть опечатка здесь:

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)

Я думаю, вам придется создать объект продукта перед вашим объектом монитора, так как вам не хватит тех суперпараметров, которые пытается получить ваш монитор.

Обходной путь - вы можете захотеть создать другой конструктор, у которого нет супер (params); таким образом, он избавится от той ошибки, которую вы получаете.

поэтому вместо вашего конструктора вы должны сделать что-то вроде этого:

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

надеюсь, что это решит вашу проблему!

0 голосов
/ 04 мая 2018

Нет конструктора с периферийными параметрами!

Peripheral(String name, String maker, int age, int price)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...