Я пытаюсь сделать конструктор, который принимает 2 элемента типа Punto
и присваивает его переменным экземпляра, в моем суперклассе У меня уже есть конструктор, но я хочу еще один в своем подклассе, так что сначала в моем подклассу я называю конструктор суперкласса, а затем я пытаюсь добавить еще один со следующей ошибкой:Перегрузка конструктора подкласса
constructor in class cannot be applied to given types.
Superclass:
public class Poligono implements Figura {
Punto[] vertici;
public Poligono(Punto[] vertici) throws IndexOutOfBoundsException {
if(vertici == null || vertici.length<3) {
throw new IndexOutOfBoundsException();
}
this.vertici = vertici;
}
подкласс:
package figura;
import punto.Punto;
public class Rettangolo extends Poligono{
Punto p1;
Punto p2;
public Rettangolo(Punto[] vertici) throws IndexOutOfBoundsException {
super(vertici);
}
public Rettangolo(Punto p1, Punto p2) throws NullPointerException{
if(p1==null || p2==null) throw new NullPointerException();
this.p1 = p1;
this.p2 = p2;
}
в моем втором конструкторе я получаю ошибку:
constructor Poligono in class Poligono cannot be applied to given types;
required: Punto[]
found: no arguments
reason: actual and formal argument lists differ in length
Обратите внимание, что вы почти наверняка хотите получить копию 'vertici' в своем конструкторе: так называемая * защитная копия * защищает ваш класс' Poligono' от последующих изменений массива 'vertici'. –