class Num
{
Num(double x)
{
System.out.println( x ) ;
}
}
class Number extends Num
{
public static void main(String[] args)
{
Num num = new Num(2) ;
}
}
在上面的程序中,它显示错误。请帮帮我。
答案 0 :(得分:6)
当您定义自己的构造函数时,编译器不会为您提供无参数构造函数。 当您定义一个没有构造函数的类时,编译器会为您调用一个no-arg构造函数,并调用super()。
class Example{
}
成为
class Example{
Example(){
super(); // an accessible no-arg constructor must be present for the class to compile.
}
但是,你的类并不是这样,因为Number类找不到Num类的无参数构造函数。你需要明确地为你调用一个构造函数来调用任何超级构造函数
解决方案: -
class Num
{
Num(double x)
{
System.out.println( x ) ;
}
}
class Number extends Num
{
Number(double x){
super(x);
}
public static void main(String[] args)
{
Num num = new Num(2) ;
}
}
答案 1 :(得分:0)
您的构造函数是为类double
定义的,但您使用整数参数调用Num。整数不会自动提升为双精度数,并且您没有默认构造函数,因此会出现编译错误。
答案 2 :(得分:0)
Asalynd正确地提供了这个问题的答案。 您的构造函数是为类double定义的,但您使用整数参数调用Num。整数不会自动提升为双精度数,并且您没有默认构造函数,因此会出现编译错误。你必须在构造函数
中传递参数之前键入强制转换