各位前辈,我想问一下第四张图里面,两个问号所在的代码都可以打印出相同的结果,第一个通过父类生成子类的对象进行调用子类的方法然后打印出来与第二种直接用子类生成子类的对象在调用子类里面的方法进行打印之间有什么不同的地方,我看视频里面老师讲解就是第一种,说是向上转型,我想知道就是既然都能够打印出相同的结果为什么要用第一个问好里的代码而不用第二种容易理解的代码?还有第一种是用继承定义接口吗?第一种的代码方式出来这种用法还有别的什么用处吗,谢谢!!!
3 回答
已采纳
丶包菜
TA贡献158条经验 获得超233个赞
假设我公司有台万能电话,能当座机又能当手机用,客户想用座机,给他万能电话座机的那个功能,客户想要用手机,同样也只需给他这只万能电话。 反正只要给他一台万能机,就能 new出座机 也能 new出手机。
万能机 万能=null;
第一次: 万能=new 座机
第二次: 万能=new 手机
第二种方案,客户要座机,给他 new座机,客户要手机,给他 new手机。
第一次: 座机 座机=new 座机
第二次: 手机 手机=new 手机
结果虽然一样,但效率和成本就不一样。
所以呢,第一种方案效率更好,他能满足许多的需求,只需调用它的娃娃们。
望远
TA贡献1017条经验 获得超1032个赞
这里只是为了说明java中的一种多态效果,可以通过继承的方式使得父类引用指向子类对象(例如工人一定是人,这就是向上类型转换),并且通过父类引用调用子类父类中均有的方法,使得代码更具有灵活性。
添加回答
举报
0/150
提交
取消