| 
 
| 对子类的实例化过程,自己回想了一下,并进行了实际测试,主要是为了弄清在初始化过程中,子类对父类构造函数的调用规则。
 
 总结如下:
 1.若父类中定义了不带参构造函数,子类是否定义都通过;
 2.若父类中没有定义任何构造函数,子类中定义通过,否则不同过;
 3.若父类中只定义了带参构造函数,子类中必须定义构造函数,且必须调用父类的带参构造函数,否则报错。
 
 下面给出实例:
 (这里只说明第3条)
 class Fu
 {
 
 /*父类只定义了带参构造函数*/
 Fu(int i)
 {
 System.out.println("fu"+i);
 }
 void show()
 {
 System.out.print("fu");
 }
 }
 
 
 class Zi extends Fu
 {
 
 Zi()
 {
 //super(9);//当此句被注释后,报错
 System.out.println("zi");
 }
 void show()
 {
 System.out.println("zi");
 }
 }
 
 public class JiCheng
 {
 
 public static void main(String[] args)
 {
 
 Zi zi = new Zi();
 
 }
 
 }
 
 此外,当父类中存在静态代码块和构造代码块时,子类初始化时它们也会被执行。
 
 
 
 | 
 |