Java 多态示例:A、B、C、D 类和 get 方法调用

代码示例:

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) 的值是 'AD'; a2.get(b) 的值是 'BB'; a2.get(a1) 的值是 'BA'; b.get(d) 的值是 'AD'。

解析:

  1. B 类中的 get 方法: B 类继承了 A 类中的 2 个 get 方法,并自己定义了 2 个 get 方法,所以 B 类共有 4 个 get 方法。

  2. 多态调用: 当调用方法时,编译器会根据实际对象的类型进行方法调用,而不是根据声明对象的类型。

  • a1.get(a1):由于 a1 的实际类型是 A,所以调用的是 A 类中的 get(A a) 方法,返回值为 'AA'。
  • a1.get(b):由于 a1 的实际类型是 A,但 b 的实际类型是 B,所以调用的是 A 类中的 get(D d) 方法,返回值为 'AD'。
  • a2.get(b):由于 a2 的实际类型是 B,所以调用的是 B 类中的 get(B b) 方法,返回值为 'BB'。
  • a2.get(a1):由于 a2 的实际类型是 B,但 a1 的实际类型是 A,所以调用的是 B 类中的 get(A a) 方法,返回值为 'BA'。
  • b.get(d):由于 b 的实际类型是 B,但 d 的实际类型是 D,所以调用的是 A 类中的 get(D d) 方法,返回值为 'AD'。

总结:

多态是面向对象编程中的一个重要概念,它允许程序在运行时根据对象的实际类型调用不同的方法,提高了程序的灵活性和可扩展性。

Java 多态示例:A、B、C、D 类和 get 方法调用

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

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