日期:2014-05-20  浏览次数:20640 次

继承时候类的执行顺序问题
:父类:
package   test;
public   class     FatherClass
{
        public   FatherClass()
  {
    System.out.println( "FatherClass   Create ");
  }
}
子类:
package   test;
import   test.FatherClass;
public   class     ChildClass   extends   FatherClass
{
  public   ChildClass()
  {
    System.out.println( "ChildClass   Create ");
  }
  public   static   void   main(String[]   args)  
  {
    FatherClass   fc   =   new   FatherClass();
    ChildClass   cc   =   new   ChildClass();
  }
}
输出结果:
FatherClass   Create
FatherClass   Create
ChildClass   Create  

为什么出现两个FatherClass   Create结果,不是特别明白,如果有10个ChildClass继承了父类,那结果不是10个FatherClass   Create   了??

------解决方案--------------------
子类的构造方法的第一条语句就是调用父类的没有参数的构造方法,如果你没有写出这条语句java虚拟机就会默认的调用,如果你显示的写了这条语句,就一定要写在构造方法中的第一条语句,不然会报错

原理简述:只有在构造方法中调用了父类的构造方法才能继承父类的相关属性和方法,要不然子类从哪里继承父类的属性和方法,在实例化子类的时候又没有和父类有任何关系。
------解决方案--------------------
子类的构造函数默认调用和这个构造函数参数一致的父类构造函数,除非在此子类构造函数的第一行显式调用父类的某个构造函数。