纠正自己的错误,鸭子类型工作原理应该也属于多态,只是没有继承而已。 但是这样的风险是可能不具备某种方法从而产生异常,比如楼下中的例子:pig使用了Student对象专用的函数kind(),如果代码多了搞混了,可能会把pig实例当成学生类(Student)的子类。这样pig想调用父类Student的方法时就会报错,因为没有继承。
鸭子类型感觉有好有坏,好处是简单粗暴,直接穿别人的衣服就行。坏处是别人的衣服不一定合身,穿一两次没什么问题,穿多了可能连自己是谁都搞不清楚了。使用时机和技巧因人而异吧!
个人的一点拙见,谢谢!
很认真,thanks~
Sign in to make a reply
莉莉娅的小暖炉
纠正自己的错误,鸭子类型工作原理应该也属于多态,只是没有继承而已。 但是这样的风险是可能不具备某种方法从而产生异常,比如楼下中的例子:pig使用了Student对象专用的函数kind(),如果代码多了搞混了,可能会把pig实例当成学生类(Student)的子类。这样pig想调用父类Student的方法时就会报错,因为没有继承。
鸭子类型感觉有好有坏,好处是简单粗暴,直接穿别人的衣服就行。坏处是别人的衣服不一定合身,穿一两次没什么问题,穿多了可能连自己是谁都搞不清楚了。使用时机和技巧因人而异吧!
个人的一点拙见,谢谢!