本帖最后由 ζ_____________ 于 2014-9-24 22:38 编辑
好比当程序执行到创建类对象的时候, 在new XXX() 的时候, 后面的那个()指的就是类的构造函数,如果里面添加了对应的参数,就会到对应参数的类的构造函数中去进行初始化. 但是! 如果这个类 继承了某个类之后(该类就为子类),在调用到构造函数的时候, 在显示初始化之前会调用一次默认的super(),这个super() 指向的就是父类的空构造函数的初始化.当然,这个super()也是可以自己定义参数的,但是父类也必须要有相同参数的构造函数. 所以执行顺序是这样的:
new()>>>子类构造函数>>>默认初始化>>>super()>>>父类构造函数>>>父类初始化(其实父类在初始化中默认也有个super(),如果没有继承的话super()指向的就是obj)>>>子类显示初始化(只考虑构造函数的情况下,静态代码块等的暂时不做考虑^^) |