1.为什么用子类对象去实例化接口 是 A a = new B();
原因是面向接口编程,提高代码维护灵活性及移植性!
题目
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) 方法。
1.为什么用子类对象去实例化接口 是 A a = new B();
原因是面向接口编程,提高代码维护灵活性及移植性!
题目
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) 方法。