public class AA {
int count = 2; public void getCount() { System.out.println("A" + this.count);
}}class BB extends AA {
int count = 20; // 重写方法
public void getCount() {
System.out.println("B" + this.count);
}
}class Test{
public static void main(String[] args) {
AA a=new AA();
System.out.println("直接调用A的变量"+a.count);//1
a.getCount();//2
BB b=new BB();//3
System.out.println("直接调用B的变量"+b.count);//4
b.getCount();//5
AA ab=new BB();//6
System.out.println("----"+ab.count);//7
ab.getCount();//8
}
}
输出 标志的1,2,3,4,5,6,7,8等处得值
麻烦解释下 7,8两处。尤其是7那里 和我猜想不一样,应该是我没理解对!请高手帮忙解释
int count = 2; public void getCount() { System.out.println("A" + this.count);
}}class BB extends AA {
int count = 20; // 重写方法
public void getCount() {
System.out.println("B" + this.count);
}
}class Test{
public static void main(String[] args) {
AA a=new AA();
System.out.println("直接调用A的变量"+a.count);//1
a.getCount();//2
BB b=new BB();//3
System.out.println("直接调用B的变量"+b.count);//4
b.getCount();//5
AA ab=new BB();//6
System.out.println("----"+ab.count);//7
ab.getCount();//8
}
}
输出 标志的1,2,3,4,5,6,7,8等处得值
麻烦解释下 7,8两处。尤其是7那里 和我猜想不一样,应该是我没理解对!请高手帮忙解释
呵呵,去测试下看。
AA ab=new BB();//6这句话具体怎么理解啊??
7既然是2那么8为什么又是20呢?
那位给解释清楚下啊!呵呵 小弟愚钝......
除开这个问题,其它就是继承和多态的问题。Java的成员变量不支持后期绑定,和引用类型保持一致,而方法是后期绑定,所以和对象的类型一致。因此,7的值为AA里面的2,而8的值是调用了BB中的getCount()方法,得到的值为20。简而言之就是,多态只针对方法,不针对成员变量希望这个答案对你有帮助