Java中的多态调用问题,下面代码输出是什么?
2016-12-28 23:22
561 查看
转自:http://www.lvhongqiang.com/blog431.html
这里面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中的多态调用问题,下面代码输出是什么?
- Java中的多态调用问题,下面代码输出是什么?
- Java中的多态调用问题,下面代码输出是什么?
- 欢迎争讨继承的问题,下面三段代码分别输出什么?欢迎留言
- java基础问题---------下面的程序代码输出的结果是多少
- JAVA多态调用案例代码
- oracle调用java方法的例子(下面所有代码都是在sql/plus中写)
- 在 JAVA多态用在解决什么问题?
- 存储过程的输出参数为游标,PL/SQL中如何调用 Java代码如何调用
- Java代码中调用shell脚本和python脚本并获得输出结果(分为小数据量和大数据量)
- cocos2d-x 使用Jin调用java层代码的问题
- 01_JNI是什么,为什么使用,怎么用JNI,Cygwin环境变量配置,NDK案例(使用Java调用C代码),javah命令使用
- mini学生管理系统。。。全部代码,4个java文件放在同一个包下面即可。用JDBC调用数据库取出数据。
- 关于java的多态方法调用顺序的问题
- 01_JNI是什么,为什么使用,怎么用JNI,Cygwin环境变量配置,NDK案例(使用Java调用C代码),javah命令使用
- java 下面是音频输出的代码:
- 看看下面JavaScript代码输出什么?
- java继承 父类子类方法调用问题 属性和静态方法是没有多态的
- 实现 java 执行 cmd 命令,打印输出,等待cmd 完全执行完成后才执行下面代码
- Android的JS调用Java代码或使用了Javascript相关技术,混淆问题