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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙运强 黑马帝   /  2011-10-28 12:04  /  2240 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Person
{        private String name;
        Person(String name){this.name=name;}
}
class Student extends Person
{        Student(){};
        public static void main(String[] args)
        {
                System.out.println("Hello World!");
        }
}
如果父类没有空的构造方法,子类就不可以写空的构造方法吗?

6 个回复

倒序浏览
祁焱 黑马帝 2011-10-28 12:09:09
沙发
可以写,如果类中没写构造方法,系统会默认为该类添加一个无参数的构造方法。
回复 使用道具 举报
我编译好像没有通过
回复 使用道具 举报
路新 黑马帝 2011-10-28 12:51:14
板凳
      在类Person中提供了一个有两个参数的构造方法,而并没有明确的写出无参构造方法,如果程序中指定了构造方法,则默认构造方法不会再生成,由于实例化子类对象时找不到父类中无参构造方法,所以程序出现了错误,而只要在Person类中增加一个什么都不做的构造方法,就这一问题就可以解决了
    class Student extends Person
      {
             Student()
             {
                  super() ; //实际上在程序的这里隐含了这样一条语句
             }
             public static void main(String[] args)
             {
                System.out.println("Hello World!");
             }
}

        super关键字出现在子类中,而且是去调用了父类中的构造方法,主要功能是完成子类调用父类中的内容,也就是调用父类中的属性或方法。
     子类构造方法的第一行默认隐含了一个“super()”语句.

        还有你的子类构造函数Student(){}; 多分号

评分

参与人数 1技术分 +2 收起 理由
李印东老师 + 2 赞一个!

查看全部评分

回复 使用道具 举报
这个不可以为空
回复 使用道具 举报
可以写,这个对子类是没有限制的,在任何类中如果不写构造方法,这个类会有一个默认的无参构造方法,如果你在类中写了一个构造方法,这个类的默认无参构造方法就没有了,如果你要用到,你必须手动写出来,在类中无论是有参的还是无参的,都有默认的super()调用父类的构造方法,如果不想调用父类的无参构造方法,可以在super里写上参数调用有参构造方法
回复 使用道具 举报
张翼 黑马帝 2011-11-8 10:06:46
7#
本帖最后由 张翼 于 2011-11-9 08:18 编辑

class Student extends Person
{        Student(){};
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马