其实不是在创建对象时,是在创建派生类时就会调用父类的默认构造函数,因为默认的构造函数看不到,所以写了一个无参数的构造函数,就相当于默认构造函数;如下,注释掉无参数构造构造函数后,编译就会报错,说明在创建派生类时调用了父类默认的构造函数;另外,无参数的构造函数在创建派生类的对象时,是会以派生顺序自动调用的;如果是有参数的构造函数,调用时用super(参数)。
class Person{
String name="";
int age=0;
double score=0.0;
//public Person(){}
public Person(String name,int age){
this.name=name;
this.age=age;
}
}
class Student extends Person{
//public Studen(){}
public Studen(String name,int age,double score){
this.name=name;
this.age=age;
this.score=score;
}
}
class GoodStudent extends Studen{
public GoodStudent(){}
}
class Test{
public static void main(String[] args){
}
} |