python 类 继承、封装、多态、抽象类、接口类
继承
1. 什么是继承: 新建类的一种方式,可以继承父类的属性、方法 子类==派生类
2. 解决什么问题: 减少代码冗余
3. 应用场景: 什么“是”什么 基类:动物 子类:人类、毛类 人类是动物类
封装
两个层面:(什么是)
1. 类和对象拥有自己的名称空间,这本身就是一种封装
2. 类中把某些属性和方法隐藏起来(或者说定义成私有的),只在类的内部使用、外部无法访问,
或者留下少量接口(函数)供外部访问
应用场景:
封装数据的主要原因是:保护隐私
封装方法的主要原因是:隔离复杂度(照相机快门)
多态
多态:同一种事物的多种形态 (定义时体现)
多态性:指的是在不考虑对象具体类型的情况下,直接使用对象(使用的时候体现)
向不同的对象发送同一条消息,不同的对象在接收时会产生不同的行为(即方法)。
也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数。
抽象类:抽象类就是从一堆类中抽取相同的内容而来的,内容包括数据属性和函数属性
特点:抽象类不能被实例化,只能被继承,且子类必须实现抽象方法(不强制,一般作为一种规范)
接口类:定义一个接口类Interface,接口类中定义了一些接口名
(就是函数名)且并未实现接口的功能,子类继承接口类,并且实现接口中的功能
#做出一个良好的抽象 class Payment(object): #规定了一个兼容接口 def pay(self): pass #微信支付 class WeChatPay(object): def pay(self,money): print('微信支付了%s'%money) #支付宝支付 class AliPay(object): def pay(self,money): print('支付宝支付了%s'%money) #苹果支付 class ApplePay(object): def pay(self,money): print('苹果支付了%s'%money) def pay(obj,money): obj.pay(money) weixin = WeChatPay() alipay = AliPay() applepay = ApplePay() #调用者无需关心具体实现细节,可以一视同仁的处理实现了特定接口的所有对象 pay(weixin,100) pay(alipay,200) pay(applepay,300)
什么是归一化
外部调用者无需关心具体细节,可一视同仁的处理实现了特定接口的所有对象”——这在程序设计上,叫做归一化