鸭子类型和多态
多态这个概念在c++和java这种强类型语言中比较强调,js,python这种弱类型语言天生支持多态。
意味着强类型语言的多态是和继承结合在一起的,多态的前提是继承。
在js和python这种弱类型语言中,多态是天生的。在Python和js中关注的不是传入对象是否是xx的子类,而是传入的对象是否有这个要执行的方法,如果有就执行。
也叫鸭子类型,“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”
多态的概念是应用于Java和C#这一类强类型语言中,而Python崇尚"鸭子类型"
动态语言调用实例方法时不检查类型,只要方法存在,参数正确,就可以调用。这就是动态语言的“鸭子类型”,它并不要求严格的继承体系,一个对象只要“看起来像鸭子,走起路来像鸭子”,那它就可以被看做是鸭子。
我思故我在