笔试题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

Last modification:June 26th, 2020 at 05:34 pm
如果觉得我的文章对你有用,请随意赞赏