【25】java基类的初始化
a,对于构造函数无参数的基类而言,它的初始化,是由其子类自动调用其构造函数来完成的,如果该其类没有构造函数,编译器会自动生成一个:
public class life {
public life(){
System.out.println("life constructor");
}
}
public class animal extends life {
public animal(){
System.out.println("animal constructor");
}
}
public class human extends animal {
public human(){
System.out.println("human constructor");
}
/**
* @param args
*/
public static void main(String[] args) {
new human();
}
}
life constructor
animal constructor
human constructor
b,如果基类的构造函数没有默认的参数,或者想调用一个包含参数的构造函数进行初始化,则必须写出对基类的调用代码,一般使用super实现:
public class life {
public life(int i){
System.out.println("life constructor");
}
}
public class animal extends life {
public animal(int i){
super(i);//子类构造的第一件事就是调用父类的构造函数
System.out.println("animal constructor");
}
}
public class human extends animal {
public human(){
super(66);////子类构造的第一件事就是调用父类的构造函数
System.out.println("human constructor");
}
/**
* @param args
*/
public static void main(String[] args) {
new human();
}
}