A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张翼 黑马帝   /  2011-11-12 19:10  /  1919 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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方法即调用父类的构造函数,这哪有问题呢?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

5 个回复

倒序浏览
qy 黑马帝 2011-11-12 20:19:25
沙发
在acc类中的无参构造函数中应该是super()的吧;来调用父类!
回复 使用道具 举报
坚强 黑马帝 2011-11-12 20:55:10
藤椅
我把第20行改了点,你看下,不过还是有问题

  1. class acc2
  2. {
  3.            public acc2()
  4.            {
  5.                    System.out.print("1");
  6.            }
  7. }
  8. class acc1 extends acc2
  9. {
  10.            public acc1()
  11.            {
  12.                    System.out.print("2");
  13.            }
  14. }
  15. public class acc extends acc1
  16. {
  17.            public acc()
  18.            {
  19.                    super(super());
  20.                    System.out.print("3");
  21.            }
  22.            public static void main(String argv[])
  23.            {
  24.                    acc t=new acc();
  25.            }
  26. }
复制代码

2.jpg (12.2 KB, 下载次数: 29)

2.jpg

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
坚强 黑马帝 2011-11-12 20:55:32
板凳
是第19行
回复 使用道具 举报
你调用了父类不存在的构造方法,如果你在类中定义了构造方法,如果你不写无参数构造方法它是不存在的,只有你不写时,它才有一个无参的默认构造方法,你在父类写了构造方法在子类的构造函数中,你要写上调用存在的构造方法,super();是调用空构造函数
回复 使用道具 举报
子父类构造函数间调用就是super();
而super.super();是什么呀,是另一个对象了吧,而这对象不存在吧,当然不通过
就你上个列子就说 super.super();相当于acc1.acc1();没这个对象吧!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马