Java-在构造函数中将对象作为参数传递。。。来自超类
我有这些类:一个称为“Shape”的抽象类,一个扩展Shape的类点,一个扩展点的类圆 我不能改变这种关系。 我需要做的是在圆中创建一个构造函数,它接收一个对象点和一个double作为参数。我已经创建了一个对象点,称为点 我已经试过了:Java-在构造函数中将对象作为参数传递。。。来自超类,java,inheritance,constructor,subclass,superclass,Java,Inheritance,Constructor,Subclass,Superclass,我有这些类:一个称为“Shape”的抽象类,一个扩展Shape的类点,一个扩展点的类圆 我不能改变这种关系。 我需要做的是在圆中创建一个构造函数,它接收一个对象点和一个double作为参数。我已经创建了一个对象点,称为点 我已经试过了: public Circle (Point objPunto, double valorRadio){ Pointp = new Point(objPunto.getX(), objPunto.getY()); setRadio(valorRadio
public Circle (Point objPunto, double valorRadio){
Pointp = new Point(objPunto.getX(), objPunto.getY());
setRadio(valorRadio);}
及
但它似乎不起作用。它告诉我:
隐式超级构造函数Punto()未定义。必须显式调用另一个构造函数
我还尝试了一些使用Super的奇怪的东西,但那也不起作用。我开始认为这是可以做到的,如果是的话。。。有人知道为什么吗
谢谢
点代码
public class Point extends Shape {
private int x;
private int y;
public Point( int valorX, int valorY ){
x = valorX;
y = valorY;
}
public void setX( int valorX ){
x = valorX;
}
public int getX(){
return x;
}
public void setY( int valorY ){
y = valorY;
}
public int getY(){
return y;
}
public String getName(){
return "Punto";
}
public String describe(){
return "[" + obtenerX() + ", " + obtenerY() + "]";
}
}
如果您的类
Circle
扩展了Point
,则它可以访问其成员。
无需创建新点()
:
您的圈子正在尝试调用
super()代码>作为第一步,但是点
没有默认的无参数构造函数。您必须调用超级方法,该方法将参数作为圆构造函数的第一行
尝试super(objpto.getX(),objpto.getY())
作为循环构造函数中的第一个调用我认为您可以调用super()
作为前两个参数,如下所示:
public Circle (Point objPunto, double valorRadio){
super(objPunto.getX(), objPunto.getY());
setRadio(valorRadio);
}
super()
public Circle (Point objPunto, double valorRadio) {
super.(objPunto.getX(), objPunto.getY());
}
但是,请确保您理解何时调用超级类的构造函数。请记住,当您进行扩展时,它仍然会创建超类,这意味着如果有任何信息需要它们自己创建,那么您需要调用super。重要的是要注意,如果您这样做,超级必须是您调用的第一件事。这是编译器错误吗?编译器会说什么错误?这个错误:隐式超级构造函数Point()未定义。必须显式调用另一个构造函数,并且出现错误。我假设您出于某种原因必须调用该超类。你能把另外两个班的代码贴出来吗。或者至少是构造器点的构造器是什么?这个是来自超类公共循环(Punto objpto,double valorRadio){super(objpto.obtenerX(),objpto.obtenerY();establecerRadio(valorRadio);}@margseo:看起来不错。有什么问题吗?
public Circle (Point objPunto, double valorRadio){
super(objPunto.getX(), objPunto.getY());
setRadio(valorRadio);
}
public Circle (Point objPunto, double valorRadio) {
super.(objPunto.getX(), objPunto.getY());
}