gpt4 book ai didi

java - 重载子类的构造函数

转载 作者:行者123 更新时间:2023-11-29 03:01:13 24 4
gpt4 key购买 nike

我正在尝试制作一个构造函数,该构造函数采用 Punto 类型的 2 个元素并将其分配给实例变量,在我的父类(super class)中我已经有一个构造函数但我想在我的子类中再添加一个,所以首先在我的子类中调用父类(super class)构造函数,然后我尝试添加一个并出现以下错误:

constructor in class cannot be applied to given types.

父类(super class):

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

最佳答案

您的public Rettangolo(Punto p1, Punto p2) 必须调用父类(super class)Poligono 的一些构造函数。编译器提示说唯一可用的构造函数 - Poligono(Punto[] vertici) - 不适合第二个 Rettangolo 构造函数的参数。

您必须使用 super(..) 调用显式调用 Poligono 构造函数。

假设传递给该构造函数的两个点是矩形的两个对角,并且 Poligono 构造函数需要一个顶点数组,您需要这样的东西:

public Rettangolo(Punto p1, Punto p2) {

super (new Punto[]{p1,
new Punto (p1.getX(),p2.getY()),
p2,
new Punto (p2.getX(),p1.getY())});

this.p1 = p1;
this.p2 = p2;
}

我可能弄错了点的顺序或方法名称。

关于java - 重载子类的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34790122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com