为了账号安全,请及时绑定邮箱和手机立即绑定

java多态性问题

java多态性问题

神不在的星期二 2018-12-06 16:55:03
public class { public static void main(String args[]){ classStart is =new classStart (); interfaceStart i = (interfaceStart )is; i.start(); } } interface interfaceStart { public void start(); } class classStart implements interfaceStart{ public void start(){ System.out.println("word..start"); } } 为什么将classStart类强制转换为interfacestart接口后,还可以调用start方法
查看完整描述

5 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

 1. 这是向上转型,并不是说将classStart转成了接口;是指类型是父类

 2. classStart 实现了interfaceStart 里的start方法,自然可以调用,而且是classStart的方法

 3. 如果classStart 有其他的方法,此时没法调用

查看完整回答
反对 回复 2018-12-16
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

i不是interfaceStart接口的实例化对象,接口是没有实例化对象的,他只有指向子类的实例。你这什么强制转化根本没什么用。

查看完整回答
反对 回复 2018-12-16
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

多态:父类引用指向子类对象。 前提:有继承或者实现; 体现:调用子类的方法(所以只有重写了方法多态才有意义)

多态时:除了调用方法时(重写方法)是子类的表现形式,其它一切都是父类的表现形式(包括编译,成员变量等),如果需要用到子类特有方法,只能向下转型或者创建子类对象。想访问父类特有方法(private),只能在父类中访问

查看完整回答
反对 回复 2018-12-16
?
长风秋雁

TA贡献1757条经验 获得超7个赞

发现自己忽略了引用和实例对象,你的解释让我很清楚了,谢谢你。

查看完整回答
反对 回复 2018-12-16
  • 5 回答
  • 0 关注
  • 517 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信