猿问

关于抽象类和继承和方法调用的一道题

请问,o.MethodA调用的是:()
A.BaseClass.methodA  B.class2.methodA
C.Class1.methodA     D.都不是

以上正确答案应该选择哪个?请给出详细原因,谢谢!

慕斯3028391
浏览 2056回答 2
2回答

深蓝蝴蝶

答案是A这个问题涉及到函数重载和重写。首先看Class1,继承了BaseClass的两个方法methodA()和methodB(),然后重写了一个方法methodA(Stirng arg),重载了methodB()。因此,Class1可以调用三个方法methodA()来自BaseClass、methodA(String arg)来自Class1和methodB()来自Class1。再看Class2,继承Class1。Class2可调用三个方法。methodA()来自BaseClass、methodA(String arg)来自Class1和methodB()来自Class1,但是Class2重载了methodB()因此Class2实际生效的方法methodA() 来自BaseClassmethodA(String arg) 来自Class1methodB() 来自Class2o.methodA(),是调用BaseClass的方法,因此选A。

慕粉15255556666

选择A,class2点父类是class1,向上找会发现它的最初父类是baseclass,方法methoda 在执行的时候想找父类的方法去执行
随时随地看视频慕课网APP

相关分类

Java
我要回答