本帖最后由 qiangwushuang 于 2012-10-25 19:16:28 编辑

解决方案 »

  1.   

    这个是反映类加载的顺序:就拿不注释this("thdemployee");这样情况来说。
     public static void main(String[] args)
    {
         new Faculty();
    }
    1.在程序的入口main方法中,初始化一个Faculty类的实例,初始化的时候先要调用构造方法
    public Faculty()
    {
          System.out.println("Faculty");
    }
    2.但是Faculty这个类继承了Employee类,所以先要把父类加载,故先调用Employee类的构造方法。
    public Employee()
    {
         this("thdemployee");
         System.out.println("emplouee");
     }
    3.在调用Employee类的构造方法的时,又因为Employee继承了Person类,所以先调用Person的构造方法。
    public Person()
    {
         System.out.println("Person");
    }
    4.person类没有继承其他自定义类(继承了Object类),故执行打印语句输出 Person
    5.person执行完成后开始执行其之类Employee类的构造方法:
     a. this("thdemployee");//调用public Employee(String s)执行打印语句,输出thdemployee 
     b. 再执行System.out.println("emplouee");这句,打印 emplouee
    6.Employee构造方法执行完成后回到其子类Faculty,并执行构造方法,打印 Faculty加载之类的时候,要先加载它的父类,所以最上层的类的构造方法要先执行,故打印记过为:
    Person
    thdemployee
    emplouee
    Faculty
      

  2.   

    楼主this()是调用本类的构造方法不是父类的,你看清楚点
    首先,子类构造方法中this()和super()只能出现一次;
    这两个方法都放在构造方法的第一句;
    看书的仔细,多次看
      

  3.   

    this是调用本类的super才是父类的