![](/img/trans.png)
[英]Implicit super class constructor MyNumber() is undefined. Must invoke another constructor
[英]The constructor <Class> is undefined. Can't use <super(arg)> in java
我是Java的新手。 我不明白为什么Java不允许我使用关键字super(arg)。 OBS:Design05C是Design05的子类。
public class Design05C extends Design05 {
private double x;
private double y;
public Design05C(char typeCoord, double xCartesian, double yCartesian) {
super(typeCoord);
this.x = xCartesian;
this.y = yCartesian;
}
//Instance methods **************************************************
public double getX()
{
if(typeCoord == 'C')
return x;
else
return (Math.cos(Math.toRadians(y)) * x);
}
public double getY()
{
if(typeCoord == 'C')
return y;
else
return (Math.sin(Math.toRadians(y)) * x);
}
}
这是超类Design05:
public class Design05
{
public char typeCoord;
public Design05C designC;
public Design05P designP;
public Design05(char type, Design05C dCartesian, Design05P dPolar)
{
if(type != 'C' && type != 'P')
throw new IllegalArgumentException();
typeCoord = type;
designC = dCartesian;
designP = dPolar;
}
}
谢谢!!!
可能的原因是,
super
类Design05
类没有构造函数,该构造函数将char作为参数。
编辑
自构造函数
public Design05(char type, Design05C dCartesian, Design05P dPolar)
{
if(type != 'C' && type != 'P')
throw new IllegalArgumentException();
typeCoord = type;
designC = dCartesian;
designP = dPolar;
}
接受三个参数,但是您只传递了一个参数
super(typeCoord);
因此,将另一个构造函数添加到您的超类中,这样它也可以单独使用char
。
public class Design05
{
public char typeCoord;
public Design05C designC;
public Design05P designP;
public Design05(char type, Design05C dCartesian, Design05P dPolar)
{
if(type != 'C' && type != 'P')
throw new IllegalArgumentException();
typeCoord = type;
designC = dCartesian;
designP = dPolar;
}
public Desgin05(char type){
typeCoord = type;
}
}
测试Design05是否已创建此构造器
public Desgin05(char value){
this.value = value;
}
如果没有构造函数,则需要创建。
Design05类中没有使用单个char参数的构造函数。 您将不得不从此更改对超级构造函数的调用
super(typeCoord);
对此
super(typeCoord, xCartesian, yCartesian);
然后您的代码将起作用。 尝试。
编辑:
您的设计本身是不正确的。 您不能在超类的构造函数中添加子类对象。 这不会工作。 从构造函数中删除子类对象。
如果要在超类对象中添加子类对象,则保留它们的引用并在构造对象后对其进行初始化。 而不是在构造函数中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.