多态:一个类型表现出来的多种状态,实际上是通过继承来完成的
既一个类实例化出来的不同对象是这个类表现出来的不同形态
而在java中:一个参数必须定制类型,所以如果想让两个类型的对象都可以传递,那么必须让这两个类继承自一个父类,在制定类型的时候使用父类来声明
鸭子类型:一个类可以是很多类的鸭子类型,既一个类不需要依靠继承其它的类来判断它是否属于其它的类
例如一个元组类是可迭代的,但是它并没有依靠继承可迭代类来判断自己是否是可迭代的
例如通过调用len函数查询某个内部实现了__len__方法的类的对象的某个数据类型的长度时,其对象可以说是鸭子类型
class List(object): # 在这里模拟一下list类的部分实现原理 def __init__(self): self.ls = [] def append(self, n): self.ls.append(n) def __len__(self): # 在类的内部实现一个__len__方法 return len(self.ls) lst = List() # 实例化一个列表对象 lst.append(4) # 调用append方法增加元素4 lst.append('hhh') def len(obj): # 在外部定义一个len方法 return obj.__len__() ret = len(lst) print(ret)