java中继承问题,求高手解释一下!

2024-12-18 01:35:05
推荐回答(3个)
回答1:

有点复杂,就解释一条,其它的你自己思考吧。
System.out.println(a2.show(b)); 结果是“B And A”,为什么不是 “B And B”或“A And A”呢?
已知a2的类型是A,实际对象是B。
那么 a2.show(b) 以根据class A的定义来选择方法,自然是进入show(A)方法。 正好 B 又覆盖了 show(A)方法,所以最终执行的是 B.show(A) 方法。

回答2:

System.out.println(a1.show(b));

因为 B继承A 执行的是A方法内的 show(A obj) 传入的是B类 但是在运行过程中会转化为A类

System.out.println(a1.show(c));

因为 C继承B B继承A 执行的是A方法内的 show(A obj) 传入的是C类 但是在运行过程中会转化为A类
给你举个例子吧
List a = new ArrayList();
然后我有可以吧 List a 强转为Object类
一下我就不一一介绍 都是这个意思 有继承关系的话 子类可以强转为父类,转化后可以调用父类的方法

回答3:

不用每一行都解释吧, 你就说你哪个比较疑惑吧