谈到java面向对象,必然会提及到创建对象时,类的初始化过程,一般来说,类的初始化过程也就是方法的执行过程,记就完事儿了。
父类静态域——》子类静态域——》父类成员初始化——》父类构造块——》1父类构造方法——》子类成员初始化——》子类构造块——》子类构造方法;
规律就是父类先于子类 静态的先于非静态的其中静态域包含静态代码块与静态方法,这个谁在前面,则先执行谁。非静态域同理
代码如下:
public static void main(String[] args) {
// TODO Auto-generated method stub
C c = new D();
}
}
class C {
static
{
System.out.println("C 基类静态域 ");
}
{
System.out.println("C 基类对象成员构造函数");
}
public C(){
System.out.println("C 基类本身的构造函数");
}
}
class D extends C{
static
{
System.out.println("D 派生类静态域");
}
{
System.out.println("D 派生类对象成员构造函数");
}
public D(){
System.out.println("D 派生类本身的构造函数");
}
运行结果: