鸭子类型和多态

多态这个概念在c++和java这种强类型语言中比较强调,js,python这种弱类型语言天生支持多态。

意味着强类型语言的多态是和继承结合在一起的,多态的前提是继承。

在js和python这种弱类型语言中,多态是天生的。在Python和js中关注的不是传入对象是否是xx的子类,而是传入的对象是否有这个要执行的方法,如果有就执行。

也叫鸭子类型,“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”

 

多态的概念是应用于Java和C#这一类强类型语言中,而Python崇尚"鸭子类型"

动态语言调用实例方法时不检查类型,只要方法存在,参数正确,就可以调用。这就是动态语言的“鸭子类型”,它并不要求严格的继承体系,一个对象只要“看起来像鸭子,走起路来像鸭子”,那它就可以被看做是鸭子。

posted @ 2022-04-24 22:51  zzfx  阅读(75)  评论(0编辑  收藏  举报