# -->

'''

多态 与 鸭子类型

--> 什么是多态
对象的多种状态,父类对象的多种 (子类对象) 状态 --> 什么是鸭子类型:
长的像就是
1.规定有什么属性及什么方法的对象叫鸭子类型
2.能提供出规定的属性与方法的对象就是鸭子 函数内有.xxx .yyy方法
传入的对象也必须要有.xxx .yyy才能运行 ''' # -- ( 多态 ) ------------------------------------------------------------------------------------------- import abc
class People(metaclass=abc.ABCMeta):
def __init__(self,name):
self.name = name def eat(self):
print('eat')
@abc.abstractmethod
def speak(self):pass class Chinese(People):
def speak(self):
print('说中国话') class England(People):
def speak(self):
print('说英国话') if __name__ == '__main__': # def ask_someone(obj):
# 多态的体现:功能或是需求,需要父类的对象,可以传入父类对象或任意子类对象
# 一般都是规定需要父类对象,传入子类对象
# 有抽象方法的父类不能被实例化 (假设因为被实例化后,就可以调用自己的抽象方法,没有意义)
def ask_someone(obj):
print('让%s上台演讲'%obj.name) # 父类提供,子类之间继承
obj.speak()
# 父类提供,英国和中国speak内容不同,
# 调用abc模块装饰父类@abc.abstractmethod子类重写 ch = Chinese('王大锤') # ch实例化,用了Chinses类,用继承的父类People中的自定义name,传入'王大锤'
en = England('Tom') ask_someone(ch)
# 调用函数ask_someone(obj) 传入ch的实例化 Chinese('王大锤')
ask_someone(en) # England 类有.name .speak
# ask_someone 方法有.name .speak需求
# 即可直接传入 # -- ( 鸭子类型 ) ------------------------------------------------------------------------------------------- # 长的差不多的类,都具有一样的功能

最新文章

  1. Spring框架值注解
  2. INI文件的读取(C语言:GetPrivateProfileString/GetPrivateProfileInt)
  3. C# 路径
  4. HDOj 1010 DFS优化
  5. char *a 与char a[] 的区别
  6. Maven远程仓库
  7. 使用SpringMVC时,配置DispatcherServlet注意的url-pattern的问题
  8. DevOps之虚拟专用网络VPN
  9. Linux 学习笔记_12_Windows与Linux文件共享服务_1.1_--Samba(下)Samba经典应用案例
  10. web自动化测试(java)---测试过程中遇到的错误合集
  11. Sql 嵌套循环
  12. wampserver变橙色,apache 服务无法启动!问题解决小记(安装失败亦可参考)
  13. MongoDB查询结果存放入新的Collection
  14. WPF双向绑定
  15. JAVA 利用Dom4j实现英语六级词汇查询 含演示地址
  16. vue 关于deep watch / computed 监听不到 vuex state 对象变化的的问题
  17. Search for a Range leetcode java
  18. Java异常总结和Spring事务处理异常机制浅析
  19. poj2115 C Looooops
  20. Java经纬读坐标的距离计算

热门文章

  1. C# interface 的隐式与显示实现及适应范围源码演示
  2. linux文件名乱码解决
  3. jquery tab切换
  4. 爬虫(五)requests模块2
  5. 用switch组件控制一个元素的显示和隐藏状态
  6. 跟随我在oracle学习php(18)
  7. JavaWeb+SVN+Maven+Tomcat +jenkins实现自动化部署
  8. unity中的UGUI一些组件的使用
  9. 关于Ubuntu使用笔记
  10. Shell编程实战