原因就是一句话:先有了父亲,才会有儿子!
程序运行时,加载AB两类,因为A是B子类,所以先加载B类,Load B,再加在A类 LoadA,调用A a = new A()代码时,会先调用其父类B的构造方法 Create B 再调用A的构造方法 Create A
Java创建对象的时候,系统会为该对象的所有实例分配内存,但这个的前提是该类已经加载了,所以您这个问题理解的时候应该也是父类要先加载的!不知道有没有理解错呢
我的理解是:执行A的时候,B还没出现,也就是父亲不在,孩子A就不可能出现,所以这个时候必须父亲在,也就是执行B
第一点,如果该类的直接父类没有初始化,则先初始化其直接父类。
第二点,如果该类中有初始化语句,则系统一次执行这些初始化语句。static{}属于静态初始化块。这道题主要考查的是类的加载。
父子类加载的时候是先加载父类再加载子类的,所以是Load B-->Load A-->Create B-->Create A;
继承类,先加载父类才会有子类的体现。你也可以理解为,没这个爸就没有这个儿子了