笔试题01
一道关于多态的笔试题
输出的答案应该是?
BA
BA
BA
AD
一,父类引用指向子类的对象时,如果方法没有被子类重写,调用的是父类的方法和变量,如果方法被重写,调用的是子类的方法。
二,对于一的特殊情况,如果一个方法的参数列表没有找到,会把向上强制转型,继续查找。
以a.m(c)为例。
a.m()方法被子类重写了,所以会在B类中找,但是参数列表中没有C类,会把c向上转换,就是B类,对于A类,m方法中还是没有B类,就会继续向上转成A类,这个时候A类m方法有A类型参数,但是该方法又被子类重写了,所以调用B类中的m(a)方法。
所以输出的是BA