一 点睛
子类对象在实例化时,子类对象会默认先调用父类中的无参构造函数,然后再调用子类构造构造方法。
二 实战
1 代码
class Person
{
String name ;
int age ;
public Person() // 父类的构造方法
{
System.out.println("***** 父类构造:1. publicPerson()") ;
}
}
class Student extends Person
{
String school ;
public Student() // 子类的构造方法
{
//super() ; //实际上程序在这里隐含了这样一条语句
System.out.println("##### 子类构造:2. public Student()");
}
}
public class SubInstantProcess
{
public static void main(String[] args)
{
Student s = new Student() ;
}
}
2 运行
***** 父类构造:1. publicPerson()
##### 子类构造:2. public Student()
3 说明
运行结果可以证明:子类对象在实例化时,会默认先去调用父类中的无参构造方法,之后再调用子类本身的相应构造方法。
实际上,在子类构造方法的首行相对于默认隐含了一个“super()”语句。上面的Student类如果改写成下面形式,也是合法的。运行结果也是一样的。
class Student extends Person
{
String school ;
public Student() // 子类的构造方法
{
super() ; //隐含了这样一条语句,它负责调用父类无参构造方法
System.out.println("##### 子类构造:2. public Student()");
}
}