Java 多态示例:A、B、C、D 类和 get 方法调用
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'。
解析:
-
B 类中的 get 方法: B 类继承了 A 类中的 2 个 get 方法,并自己定义了 2 个 get 方法,所以 B 类共有 4 个 get 方法。
-
多态调用: 当调用方法时,编译器会根据实际对象的类型进行方法调用,而不是根据声明对象的类型。
- 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'。
总结:
多态是面向对象编程中的一个重要概念,它允许程序在运行时根据对象的实际类型调用不同的方法,提高了程序的灵活性和可扩展性。
原文地址: https://www.cveoy.top/t/topic/n0Ww 著作权归作者所有。请勿转载和采集!