黑马程序员技术交流社区
标题:
构造函数的传递问题
[打印本页]
作者:
张翼
时间:
2011-11-12 19:10
标题:
构造函数的传递问题
class acc2
{
public acc2()
{
System.out.print("1");
}
}
class acc1 extends acc2
{
public acc1()
{
System.out.print("2");
}
}
public class acc extends acc1
{
public acc()
{
super.super();
System.out.print("3");
}
public static void main(String argv[])
{
acc t=new acc();
}
}怎么就无法编译呢?super不就是相当于父类的对象吗,调用super方法即调用父类的构造函数,这哪有问题呢?
作者:
qy
时间:
2011-11-12 20:19
在acc类中的无参构造函数中应该是super()的吧;来调用父类!
作者:
坚强
时间:
2011-11-12 20:55
我把第20行改了点,你看下,不过还是有问题
class acc2
{
public acc2()
{
System.out.print("1");
}
}
class acc1 extends acc2
{
public acc1()
{
System.out.print("2");
}
}
public class acc extends acc1
{
public acc()
{
super(super());
System.out.print("3");
}
public static void main(String argv[])
{
acc t=new acc();
}
}
复制代码
2.jpg
(12.2 KB, 下载次数: 24)
下载附件
2011-11-12 20:55 上传
作者:
坚强
时间:
2011-11-12 20:55
是第19行
作者:
史晓霞
时间:
2011-11-12 21:48
你调用了父类不存在的构造方法,如果你在类中定义了构造方法,如果你不写无参数构造方法它是不存在的,只有你不写时,它才有一个无参的默认构造方法,你在父类写了构造方法在子类的构造函数中,你要写上调用存在的构造方法,super();是调用空构造函数
作者:
别让生命去等待_
时间:
2011-11-12 22:37
子父类构造函数间调用就是super();
而super.super();是什么呀,是另一个对象了吧,而这对象不存在吧,当然不通过
就你上个列子就说 super.super();相当于acc1.acc1();没这个对象吧!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2