大家帮我看看这个java小练习为什么选B

想飞的超人儿 2015-08-22 04:21:34
最近在复习java基础知识,在接口和抽象类部分看见一个小练习,不知道为什么选择B,求指导,感激不尽!

为什么会选择“编译失败”呢?求指导!谢啦!
...全文
180 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
接口没有testIT方法啊
Cabbage_gang 2015-08-25
  • 打赏
  • 举报
回复
引用 3 楼 w9151241471 的回复:
getIt()方法得到的是beta的子类对象Alpha,b是Beta对象,这是所谓的父类引用指向子类对象。这样得到的b,本身是Alpha对象,但是确实用父类对象引用的。这样的话,b对象虽然本身是Alpha,但是只能用其属于父类Beta中的属性和方法。而子类对象Alpha中的方法确实不能调用,你可以理解为虚拟机看不到属于Alpha 中的方法和属性,所以主函数调用的textIt()方法是错误的。如果想调用textIt()方法。需要在输出方法前加一个强制转换:Alpha a = (Alpha) b; 然后调用a.textIt()
补充一点,还可以在Beta中定义出textIt()的接口,这样b就可以访问了
xuanfengshizi 2015-08-25
  • 打赏
  • 举报
回复
接口类不能调用 实现类中 自己没有的方法
谷儿哥哥 2015-08-23
  • 打赏
  • 举报
回复
引用 1楼LYH_KING 的回复:
14行 Beta b=getIt(); 就不对了吧 Beta是个接口类,在这里却当对象使用
这句没问题。楼下正解。
Mr_王xi 2015-08-22
  • 打赏
  • 举报
回复
getIt()方法得到的是beta的子类对象Alpha,b是Beta对象,这是所谓的父类引用指向子类对象。这样得到的b,本身是Alpha对象,但是确实用父类对象引用的。这样的话,b对象虽然本身是Alpha,但是只能用其属于父类Beta中的属性和方法。而子类对象Alpha中的方法确实不能调用,你可以理解为虚拟机看不到属于Alpha 中的方法和属性,所以主函数调用的textIt()方法是错误的。如果想调用textIt()方法。需要在输出方法前加一个强制转换:Alpha a = (Alpha) b; 然后调用a.textIt()
benluobo 2015-08-22
  • 打赏
  • 举报
回复
b.testIt() 这句有问题 Beta接口没有该方法的定义
马七甲 2015-08-22
  • 打赏
  • 举报
回复
14行 Beta b=getIt(); 就不对了吧 Beta是个接口类,在这里却当对象使用

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧