本帖最后由 never615 于 2014-5-28 17:35 编辑
首先明白这几点知识:
1.一个类你不写构造函数系统会默认有一个的,如果你写了一个不管是带不带参数的,系统就不会默认写那个空的构造函数了
2.默认的构造函数第一句是super()
比如下面这个例子:如果只在Person里面写了一个带参的构造函数,系统就不会为他写空的了 当Student继承Person,里面什么都不写时: 系统会给他默认一个空的构造函数并且第一句是super() !!问题出现了 ,Person里面并没有空参的构造函数,所以这样调用是错误的
要不你手动给Person加一个空的构造函数,要不你子类也写一个带参的构造函数构造函数。里面也要写上super语句,不写就是super()有爆错了!!像这个例子就写上super(name)
所以你的问题,并不是只要父类有带参的构造函数,你就要写与父类构造函数有相同参数的构造函数,你什么构造函数都不写,给父类加一个空的构造函数就行。
class Person
{
private String name;
//Person()
//{}
Person(String name)
{
this.name=name;
}
public String getName()
{
return name;
}
}
class Student extends Person
{
//Student(String name)
//{
////super(name);
//}
}
|