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)

 

 
什么是归一化
外部调用者无需关心具体细节,可一视同仁的处理实现了特定接口的所有对象”——这在程序设计上,叫做归一化
 
 
posted @ 2018-11-18 10:34  漂泊的蒲公英  阅读(192)  评论(0)    收藏  举报