黑马程序员技术交流社区
标题:
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