比如:
class A1
{
    public static int a=5;
}
class B1 extends A1
{
    public static int a=8;
    void print(){
        System.out.println(super.a);
        System.out.println(a);
    }
}
class TestStatic
{
    public static void main(String args[])
    {
        System.out.println("b.a="+B1.a);
        System.out.println("b.a="+A1.a);
        new B1().print();
    }
}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【sure2003】截止到2008-07-26 11:24:18的历史汇总数据(不包括此帖):
    发帖的总数量:268                      发帖的总分数:11073                    每贴平均分数:41                       
    回帖的总数量:231                      得分贴总数量:7                        回帖的得分率:3%                       
    结贴的总数量:262                      结贴的总分数:10863                    
    无满意结贴数:2                        无满意结贴分:50                       
    未结的帖子数:6                        未结的总分数:210                      
    结贴的百分比:97.76 %               结分的百分比:98.10 %                  
    无满意结贴率:0.76  %               无满意结分率:0.46  %                  
    值得尊敬
      

  2.   

    类的代码在初次使用时才会加载
    这通常是指加载发生于创建类的第一个对象时,但是当访问static域或static 方法时,也会发生加载
      

  3.   

    由引导类加载器负责加载的核心类比如 String 类在 JVM 启动时(main 方法开始执行前)就会被加载,其它类在使用前(new 它对象或调用其静态方法访问静态域等等前)会被动态加载,要注意的是子类被加载前它的所有超类要根据由父到子的顺序被逐一加载。
      

  4.   


    就你上面的代码说一下:
    当你在doc环境下输入:
    java TestStatic时,
    虚拟机会先加载TestStatic类,此时虚拟机会先看看TestStatic类有没有静态的字段,
    没有,直接执行main方法。
    main方法中第一句代码是打印B1.a,
    虚拟机便会去找类B1,找到类B1时,虚拟机发现B1的父亲是A1,
    于是父亲优先,先加载A1,
    同样,在加载A1时,会看看A1中有什么静态的东西,有,
    static int a = 5;
    a是静态的,先加载,当把静态的字段加载完后,一个类就算加载完了
    所以A1已经加载完毕,以后不用在加载了。
    父亲加载完了,轮到B1了,同样先看看里面有什么静态的字段,有,
    static int a = 8;
    此时B1也加载完毕了。
    第一条打印语句到此时也执行完毕了,
    轮到第二条打印语句了。
    当执行new B1().print();这句时,
    会发生动态绑定
    此时会有一个代表B1对象的this对象传递给print()方法,
    所以print()方法中的
     System.out.println(a);
    其实是,
     System.out.println(this.a);
    会打印出一个8出来。
    至于super.a就简单了,
    打印父类中的a,
    结果是5.
    到此,main()方法执行完,整个程序退出。
      

  5.   

    如果要初始化静态变量,就先初始化静态变量,而且只初始化一次;静态块次之;子类继承父类的话,优先初始化父类的变量。所以初始化顺序是A1.a,然后是B1.a。