Python的多态怎么理解

之前搜索的解释都说鸭子模型,什么一个东西只要它叫起来像鸭子、走起来像鸭子、xxx的,它就可以被称为鸭子😂。啥玩意儿,真的太抽象,就是每个字我都认识,但是连起来听不懂在说什么。

单独去理解很抽象,但是和其他语言对比一下感觉明白了一些。

换成Java或者其他语言,多态是基于:接口或抽象类和抽象方法来实现,让数据可以以多种形态存在。怎么理解呢?

因为Java是强类型语言,它们的接口在定义时就要明确定义参数类型,在调用接口时也要传入符合接口定义的参数类型。所以这些语言如果想要实现一个接口能支持多种形态参数时,就使用到多态。Java通过引用父类来实现多态。

截取一个教程里的例子,如果没有实现多态,当下面的Test里的show方法定义传参类型是Animal时,就必须传入Animal类的实例,传其他类型是不行的。但现在因为Cat和Dog都继承了Animal这个父类,所以show方法可以传Cat和Dog,并且因为都继承了eat并对eat进行实现,所以能调用。(描述的不专业,表达一个大概意思,具体Java多态的实现应该有不同的方式。)

 

 但是对于Python这种弱类型语言,它的方法在定义时,可以不指定参数类型,调用时支持任意数据类型传参。基于这个特性,Python天生支持多态,不用特意实现。hello方法里,不管arg传入的是什么对象什么类型,只要它有speak方法就行。

posted @ 2023-01-15 15:13  IdaW  阅读(314)  评论(0)    收藏  举报