Java中的多态调用问题,下面代码输出是什么?
2016-12-29 13:42
489 查看
达人科技 2016-12-29 00:02
这里面a虽然指向一个BBB对象,但声明的是一个AAA,所以a只能调用AAA中的两个方法:
根本访问不到BBB中的方法:
然后,
a确实指向一个BBB对象,因为BBB继承自AAA,父类AAA中的
被BBB中的
覆盖,结果就是B and A。
最后,为什么参数b可以传入show(AAA obj)?
虽然传入的参数b是BBB类型,但AAA是BBB的父类,参数b可以被show(AAA obj)接受。
本文为头条号作者发布,不代表今日头条立场。
问题:
下面代码输出是什么?public class Test3 { public static void main(String[] args) { AAA a = new BBB; BBB b = new BBB; System.out.println(a.show(b));//B and A } } class AAA { public String show(D obj){ return ("A and D"); } public String show(AAA obj){ return ("A and A"); } } class BBB extends AAA{ public String show(BBB obj){ return ("B and B"); } public String show(AAA obj){ return ("B and A"); } public String show(D obj){ return ("D and A"); } } class C extends BBB{} class D extends BBB{}
解答:
先说为什么不是B and B。AAA a = new BBB; BBB b = new BBB; System.out.println(a.show(b));//B and A
这里面a虽然指向一个BBB对象,但声明的是一个AAA,所以a只能调用AAA中的两个方法:
public String show(D obj) public String show(AAA obj)
根本访问不到BBB中的方法:
public String show(BBB obj)
然后,
a确实指向一个BBB对象,因为BBB继承自AAA,父类AAA中的
public String show(AAA obj)
被BBB中的
public String show(AAA obj)
覆盖,结果就是B and A。
最后,为什么参数b可以传入show(AAA obj)?
虽然传入的参数b是BBB类型,但AAA是BBB的父类,参数b可以被show(AAA obj)接受。
本文为头条号作者发布,不代表今日头条立场。
相关文章推荐
- java学习笔记之---Struts2基础
- 解除spring-boot上传图片大小的限制
- java 过滤器Filter
- java-pdf转word
- Java经典题目 06 07
- spring的启动过程03.1-占位符替换过程-xml配置的参数
- Java与模式之装饰(Decorator)模式
- 1 springBoot 建立web 项目
- SpringBoot(一)_Eclipse的安装和使用
- java-02
- java.util.ResourceBundle使用详解
- 记录java基础学习1
- struts2入门
- 后台使用国际化
- 【Spring实战】----Security4.1.3鉴权之美--基于投票的AccessDecisionManager实现及源码分析
- java自带的监控工具VisualVM一
- Java自学之choose标签
- 01-java平台
- Spring中DispatcherServlet类源码
- AOP原理 java代理