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,前一个你自加了,后一个没自加。