a.在其他任何事物发生之前,将分配给对象的存储空间初始化成二进制0。
b.调用基类构造函数。
c.按声明顺序调用成员的初始化方法。
d.最后调用子类的构造函数。
网站速度检测
http://www.iis7.com/b/wzjk/
由于存在表态数据,实际过程为
b.继承体系的所有静态成员初始化(先父类,后子类)
c.父类初始化完成(普通成员的初始化-->构造函数的调用)
d.子类初始化(普通成员-->构造函数)
private方法本质上属于final方法(因此不能被子类访问)。
构造函数本质上属于static方法,只不过该static声明是隐式的。
final方法会使编译器生成更有效的代码,这也是为什么说声明为final方法能在一定程度上提高性能(效果不明显)。
如果某个方法是静态的,它的行为就不具有多态性。
在父类构造函数内部调用具有多态行为的函数将导致无法预测的结果,因为此时子类对象还没初始化,此时调用子类方法不会得到我们想要的结果。
只有非private方法才可以被覆盖,但覆盖private方法对子类来说是一个新的方法而非重载方法。因此,在子类中,新方法名最好不要与基类的private方法采取同一名字。
Java类中属性域的访问操作都由编译器解析,因此不是多态的。父类和子类的同名属性都会分配不同的存储空间。为了得到父类的属性field,必须显式地指明super.field。