好处:
1:实现了Java 中的多态;提高了代码的简介性。
2:提高了代码的复用率,减少重复代码的编写,一定程度上达到了解耦。
坏处:
会丢失子类特有的某些方法和属性。(在一篇博客上看见说一定可以,我真是笑了)
实战演习+错误展示:
定义父亲跟儿子;a 是正常创建的父亲对象;b 是用上转型对象方式创建的儿子对象。这里调用孩子特有的打篮球方法,发现 a ,b都报错!证明上转型的确会丢失儿子自己独有的方法!
下面看看,正常的父子都有打篮球方法,那就没问题,父亲打父亲的,儿子打儿子的,儿子没有吃饭方法,但是没关系,根据继承的特性,父亲可以吃饭,儿子也可以吃饭,但是吃的是父亲的饭。父爱如山。
那么用儿子创建父亲(翻了天了)当然也是大错特错的,编译都不给过
错误总结:(摘自网上某篇博客)
由此可见这两个结论是错的;也希望各位大佬对自己发布的东西负责,写得难懂可以说不想教人,或者技术高深,写错了还不及时改,就是错误引导了。
下面我们看看上转型对象怎么简洁了代码呢?请看:
1:定义一个Club方法,规定只有父亲类那种成熟男人才能进入。子类是进不去的。
2:那么怎么办?儿子们叛逆期也想进去玩,就穿上爸爸的衣服,假装成爸爸进去,进去后再露出自己的本色。
3:Club呢,也不用为一个儿子专门定制一个,只要是父亲类,就都让他进同一个Club玩。
这样就发现解决需求了,大家都能进Club玩,吃饭打球都可以。如果没有做上转型对象。儿子要进Club玩,怎么办?那就只能单独开一间未成年不能进的Club。那假如还有更细分的年龄阶段呢?那岂不是要开N个Club?写N个方法?或者父亲要进网吧Club揪出儿子,但是却不给父亲进。
虽然比喻有点不恰当,但是这样确实做到了简化,做到了一个规范化统一。
好了,这期分享就到这里,谢谢大家,鞠躬!