当前位置: 代码迷 >> Java相关 >> java中静态变量有关问题中值的有关问题
  详细解决方案

java中静态变量有关问题中值的有关问题

热度:24   发布时间:2016-04-22 21:02:46.0
java中静态变量问题中值的问题
public class DuotaiTest {
  public int aa;
//父类
   public DuotaiTest() {super();   
   }
}
//子类
public class DT extends DuotaiTest {  
    static int aa;  public DT() {   super(); 
 } 
 public static void main(String[] args) {
           DuotaiTest d=new DT();
           d.aa++;
           System.out.println(d.aa); 
          DuotaiTest ss=new DT(); 
          System.out.println(ss.aa); 
 }
}运行结果:1  
                0
有那位高手知道为什么结果不是 1  
                                                 1 
------解决方案--------------------
亲这是属性不是方法,不要曲解多态,d.aa++这一步的赋值等于赋值了你那个父类的属性;如果想让结果等于1,把你父类的aa改为静态!
------解决方案--------------------
个人理解:每个子类对象都包含一个父类属性aa,因为是实例属性,初始值都为0;执行     System.out.println(d.aa);  之前,有一步 d.aa++;,所以第一个对象的父类属性变成了1,而第二个对象没有自加的步骤,所以还是0
------解决方案--------------------
因为你new 了两个对象啊。那就是说内存中有两个 static aa,前一个你自加了,后一个没自加。