黑马程序员技术交流社区
标题:
哪里出错了???
[打印本页]
作者:
张学东
时间:
2012-10-21 10:10
标题:
哪里出错了???
我编了下面几行代码:
class B
{
public int i;
B(int i)
{
this.i = i*2;
}
}
class A extends B
{
public static void main(String[] args)
{
A a = new A(2);
}
A(int i)
{
System.out.println(i);
}
}
复制代码
结果编译的时候出错了:
Java\A.java:9: 找不到符号
符号: 构造函数 B()
位置: 类 B
{
^
1 错误
作者:
刘伟平
时间:
2012-10-21 10:23
---------- Java编译 ----------
Test.java:13: 错误: 无法将类 B中的构造器 B应用到给定类型;
{
^
需要: int
找到: 没有参数
原因: 实际参数列表和形式参数列表长度不同
1 个错误
输出完成 (耗时 0 秒) - 正常终止
作者:
廖智
时间:
2012-10-21 10:27
本帖最后由 廖智 于 2012-10-21 10:33 编辑
class B
{
public int i;
B(int i)
{
this.i = i*2;
}
}
class A extends B
{
public static void main(String[] args)
{
A a = new A(2);
}
A(int i)
{
super();
//-->这里默认有super(),子类构造函数的第一行,默认会有一个super(),但你的父类构造函数中已经定义了一个B(int i)有参数构造函数,空参数构造函数就没有了,所以要自己手动指定一个有参数的构造方法调用父类。
System.out.println(i);
}
}
作者:
王自强
时间:
2012-10-21 10:38
class B
{
public int i;
B(int i)
{
this.i = i*2;
}
}
class A extends B
{
public A(int i)
{
super(i);
/*
你不写这句话,系统就会默认写一句 super();
然而,父类中没有空参数的构造函数,所以报错说找不到
找不到 构造函数B()
位置 类B中
*/
System.out.println(i);
}
public static void main(String[] args)
{
A a = new A(2);
}
}
复制代码
作者:
李润根
时间:
2012-10-21 11:09
要么在class A的构造函数第一行添加super(i);
要么在class B添加一个空参数的构造函数
作者:
ssx0101
时间:
2012-10-21 11:42
由于类B的构造函数式有一个参数的,类A继承类B时要在类A的构造函数中使用super(i),这样在类A实例化的时候才能通过传递参数i来调用其父类的构造函数。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2