java多态的面试题_Java多态面试题案例几解题思路

---恢复内容开始---

Java多态面试题案例几解题思路

这道题是来自别人,先开始看到题很懵,后来有自己的思路:

1 classA2

3 {4

5 publicString show(D obj){6

7 return ("A and D");8

9 }10

11 publicString show(A obj){12

13 return ("A and A");14

15 }16

17 }18

19 class B extendsA20

21 {22

23 publicString show(B obj){24

25 return ("B and B");26

27 }28

29 publicString show(A obj){30

31 return ("B and A");32

33 }34

35 }36

37 class C extendsB{}38

39 class D extendsB{}40

41 classE42

43 {44

45 public static voidmain(String [] args)46

47 {48

49 A a1 = newA();50

51 A a2 = newB();52

53 B b = newB();54

55 C c = newC();56

57 D d = newD();58

59 System.out.println(a1.show(b)); //①

60

61 System.out.println(a1.show(c)); //②

62

63 System.out.println(a1.show(d)); //③

64

65 System.out.println(a2.show(b)); //④

66

67 System.out.println(a2.show(c)); //⑤

68

69 System.out.println(a2.show(d)); //⑥

70

71 System.out.println(b.show(b)); //⑦

72

73 System.out.println(b.show(c)); //⑧

74

75 System.out.println(b.show(d)); //⑨

76

77 }78

79 }80

81 (三)答案82

83

84

85 ① A and A86

87 ② A and A88

89 ③ A and D90

91 ④ B and A92

93 ⑤ B and A94

95 ⑥ A and D96

97 ⑦ B and B98

99 ⑧ B and B100

101 ⑨ A and D

思路:

解题口诀:

成员变量:编译看左,运行看左(因为无法重写);

成员方法:编译看左,运行看右(因为普通成员方法可以重写,变量不可以);

静态方法:编译看左,运行看左(因为属于类);

第一个:在A类中找show(B),然而没有B类对象作为参数方法,就找B的上个类,就 找到A类中有一个show(A)方法,所以是AA

第二个:在A类中找show(C),然而没有C类对象作为参数方法,但是A类 为C 的父类的父类,所以打印AA

第三个:因为其中有D类对象作为参数的方法,所以输出AD

第四个:父类引用指向子类对象,首先调用的是 对象的方法 也就是B类中的,又因为B类中

向上转型,它只能访问父类中拥有的方法和属性,而对于不存在的方法,不能使用,意思就是只能使用重写的方法或者父类的方法。所以是BA;

第五个:虽然 C类继承B类 ,但是只能调用父类中存在的方法,没有以C类对象作为参数的方法,所以只能将C类作为A类,所以也是BA

第六个:因为父类中 直接有D作为参数的方法,所以 AD

第七个:调用B类中以B类对象所谓参数的方法,所以BB

第八个: 因为A B C 类中都没有 以C类对象作为参数的方法,所以C类变为B类,在B类中有 以B类作为参数的方法,(注:如果这点还找不到的话,就会将C类看做A类)并且执行B类的 BA, 为什么不是AA呢 因为覆盖掉了

第九个:以D 对象作为参数的方法 存在,所以执行A类的show(D)方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值