黑马程序员技术交流社区

标题: java基础 [打印本页]

作者: 孙运强    时间: 2011-10-28 12:04
标题: java基础
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!");
        }
}
如果父类没有空的构造方法,子类就不可以写空的构造方法吗?
作者: 祁焱    时间: 2011-10-28 12:09
可以写,如果类中没写构造方法,系统会默认为该类添加一个无参数的构造方法。
作者: 孙运强    时间: 2011-10-28 12:11
我编译好像没有通过
作者: 路新    时间: 2011-10-28 12:51
      在类Person中提供了一个有两个参数的构造方法,而并没有明确的写出无参构造方法,如果程序中指定了构造方法,则默认构造方法不会再生成,由于实例化子类对象时找不到父类中无参构造方法,所以程序出现了错误,而只要在Person类中增加一个什么都不做的构造方法,就这一问题就可以解决了
    class Student extends Person
      {
             Student()
             {
                  super() ; //实际上在程序的这里隐含了这样一条语句
             }
             public static void main(String[] args)
             {
                System.out.println("Hello World!");
             }
}

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

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

作者: 崔浩    时间: 2011-11-7 22:01
这个不可以为空
作者: 史晓霞    时间: 2011-11-7 22:29
可以写,这个对子类是没有限制的,在任何类中如果不写构造方法,这个类会有一个默认的无参构造方法,如果你在类中写了一个构造方法,这个类的默认无参构造方法就没有了,如果你要用到,你必须手动写出来,在类中无论是有参的还是无参的,都有默认的super()调用父类的构造方法,如果不想调用父类的无参构造方法,可以在super里写上参数调用有参构造方法
作者: 张翼    时间: 2011-11-8 10:06
本帖最后由 张翼 于 2011-11-9 08:18 编辑

class Student extends Person
{        Student(){};





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2