public class dut{
public static void main(String[] args){
System.out.println(Father.count);
Son.count=9999999;
Father.count=0;
System.out.println(Son.count);
System.out.println(Father.count);
}
}
 class Father {
static int count;

}
class Son extends Father{

}

解决方案 »

  1.   

    程序运行的输出是
    0
    0
    0父类和子类共用了同一个count变量,这是怎么回事?难道子类继承父类的static类型的属性之后,和父类共用同一个static属性?
      

  2.   

    请您注意继承,具我所知,static类型成员,包括方法和属性,是不支持继承的static比较特殊吧,我个人认为他有点像C/C++的全局变量
      

  3.   

    关于static的问题,还是请高手指点一下,我知道的是static被存储在静态存储区中,应该不是堆或栈中。而且static成员的初始化是在类加载的时候被初始化的,而不像实力变量是在内存分配的时候进行初始化的。而且static方法在继承的时候表现的也很有趣,或者说那根本就不是继承,更不谈不上是多态了,只能说成是覆盖吧,对于static内布类,有些时候可以理解把外部类理解成包名。请大家说说我的看法存在哪些问题,谢谢
      

  4.   

    只要是static int count;
    无论NEW多少个对象出来  都是共用一个count   这其中也包括子类的对象  
    因为只有一个  所以无论哪个对象(或子类的对象)改变了这个值,其他的对象中的count(实际上是同一个)也就变咯
      

  5.   


    public class dut{
    public static void main(String[] args){
    System.out.println(Father.count);
    Son.setCount(9999999);
    Father.setCount(0);
    System.out.println(Son.getCount());
    System.out.println(Father.getCount());
    }
    }
     class Father {
      private int count;  public void setCount(int intCount){
        this.count = intCount;
      }
      public int getCount() {
        return this.count;
      }
    }
    class Son extends Father{
       private int count;}不知道这样行不行哈,没有环境
    没有办法测试
      

  6.   

    这样就可以了:
    package csdn.oo;public class TestInstanceCounter {    /**
         * @param args
         */
        public static void main(String[] args) {
            Parent p = new Parent();
            Child c = new Child();        System.out.println("Parent count: " + Parent.getInstanceCount());
            System.out.println("Child count: " + Child.getInstanceCount());
        }    static class Parent {
            private static int counter = 0;        public static int getInstanceCount() {
                return counter;
            }        public Parent() {
                this(true);
            }
            
            public Parent(boolean addInstanceCount) {
                if (addInstanceCount) {
                    counter += 1;
                }
            }
        }    static class Child extends Parent {
            private static int counter = 0;        public static int getInstanceCount() {
                return counter;
            }        public Child() {
                super(false);
                counter += 1;
            }
        }
    }
      

  7.   

    public class dut
    {
    public static void main(String[] args)
    {
    System.out.println(Father.count);    // 0
    Son.count=9999999;
    Father.count=10;
    System.out.println(Son.count);
    System.out.println(Father.count);
    }
    }
    class Father 
    {
    static int count;
    }
    class Son extends Father
    {}0
    10
    10楼主明白了么
      

  8.   

    package text;public class Dut{
    public static void main(String[] args){
    System.out.println(Father.count);
    Son.count=9999999;
    Father.count=0;
    Son.count=9999999;
    System.out.println(Son.count);
    System.out.println(Father.count);
    }
    }
     class Father {
    static int count; }
    class Son extends Father{ }
    0
    9999999
    9999999
    这个样子有说服力些