Java对象初始化

class A{     

    static{B.sshow(0);}
    static int sa=1;
    static{B.sshow(1);}


    {show(10);}  
    int a=1;  
    {show(11);}  


    A(){
        a=2;
        show(12);
    }  

    void show(int label){}
  
}

class B extends A{  

    static{sshow(2);}
    static int sb=1;
    static{sshow(3);}

 

    {show(13);}  
    int b=1;  
    {show(14);}  


    B(){
        b=2;
        show(15);
    }


    void show(int label){
         System.out.println(label+": a="+a+" b="+b);  
    }

    static void sshow(int label){
         System.out.println(label+":sa="+A.sa+" sb="+B.sb);
    }
}

public class C{
    public static void main(String[] args){
        new B();
    }
}
输出:
============
0:sa=0 sb=0
1:sa=1 sb=0
2:sa=1 sb=0
3:sa=1 sb=1
10: a=0 b=0
11: a=1 b=0
12: a=2 b=0
13: a=2 b=0
14: a=2 b=1
15: a=2 b=2

说明对象初始化的顺序为:  
为基类和子类静态成员分配存储空间
基类静态成员初始化
子类静态成员初始化
为基类和子类的非静态成员分配存储空间
基类非静态成员初始化
调用基类构造函数
子类非静态成员初始化
调用子类构造函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值