class B extends A {}
class C extends B {}

那么   new C()后首先调用的是A中的构造函数,大家能不能多方面的说说java为什么要这么做?
      
       比如和捕获异常有什么关系么?

解决方案 »

  1.   

    内部原理似乎和JVM 的设计有关。
      

  2.   

    顶5楼的,没有父类何来子类
        
    public class Debug { public Debug(){
    super(); //即使你不写编译器也要给你加上
    }
    }
    /*顺便说一下new对象的执行顺序:
    1>申请对象程属性的内存
    2>属性默认初始化
    3>属性显示初始化
    4>执行构造器中的代码*/
      

  3.   

    任何类都继承自Object类,他是所有类的老祖宗。哈哈,这叫OO。每个人都是有老祖宗的
      

  4.   

    每个构造方法的第一条语句是super();
    即使你不写,编译器在编译的时候也会为你加上。
    super()方法是用来调用父类的构造方法的。
    所以在new子类时会调用到父类的构造方法。为什么要这样设计呢?
    仔细想想就会明白,因为构造方法体内放的是类的初始化语句。
      

  5.   

    初始化顺序问题,推荐你看下TIJ,这个问题全世界就这本书讲的最好
      

  6.   

    5楼说的经典 建议你去看下java类的执行顺序