四个子父类A、B、C、D如下:

class A {
String get(D d) {return 'AD';} String get(A a) {return 'AA';}
}
class B extends A {
String get(A a) {return 'BA';} String get(B b) {return 'BB';}
}
class C extends B {}
class D extends B {}

并且有:

A a1 = new A(); A a2 = new B(); // 多态
B b = new B(); D d = new D();

请问,B类中有( )个get方法;a1.get(a1)的值是( ); a1.get(b)的值是( ) a2.get(b)的值是( );a2.get(a1)的值是( );b.get(d)的值是( )。

答案:

B类中有4个get方法; a1.get(a1)的值是'AA'; a1.get(b)的值是'AA'; a2.get(b)的值是'BB'; a2.get(a1)的值是'BA'; b.get(d)的值是'AD'。

解释:

  • B类继承了A类,因此拥有A类中的两个get方法。
  • B类自身定义了两个get方法,所以总共拥有4个get方法。
  • 方法调用时,会根据实际对象的类型进行动态绑定,而不是根据引用变量的类型。
  • a1.get(a1)调用的是A类的get(A a)方法。
  • a1.get(b)调用的是A类的get(A a)方法。
  • a2.get(b)调用的是B类的get(B b)方法。
  • a2.get(a1)调用的是B类的get(A a)方法。
  • b.get(d)调用的是B类的get(D d)方法,由于B类没有定义get(D d)方法,所以会向上查找,最终调用A类的get(D d)方法。

原文地址: https://www.cveoy.top/t/topic/n0V1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录