zoukankan      html  css  js  c++  java
  • 第54天python学习面向对象三大特性 封装 多态 继承。。作者认为只有2大特性。。封装是最难的

    多态就是继承的体现

    多态时间上是依附与继承的的两种含义:“”改变“”和“扩展”本身就意味着必须有机制去自动选用你改变过的扩展的版本,古无多态,则2种含义就不能实现

    所有多态实质上是继承的实现细节,那么让多态与封装、继承者两个概念并列,显然不是符合逻辑的

    封装:

    第一层面的封装:类就是麻袋,这本身就是一种封装

    第二层面的封装:类中定义私有的,外部无法访问。只是约定实际还是可以访问。1个下划线,直接下划线调用,2个下划线。2个下划线知道类名是可以直接调用的只是被修改而已

    第三层面的封装:明确区分内外,内部的实现逻辑,外部不知晓,并且为封装到内部的逻辑提供一个访问接口给外部使用---真真意义的封装

    #注意:设计之前应该确定一定需要隐藏的在隐藏,不然后面接口开无数


    class Room:
    def __init__(self,name,ower,width,length,high):
    self.name=name
    self.ower=ower
    self.__width=width#使用__来定义私有的,只能内部使用
    self.__length=length
    self.__high=high

    def aera(self):#由于是类的内部可以访问class的属性,也是定义一个函数(接口函数)

    return self.__width * self.__length

    r1=Room("卫生间","张三",100,100,100)

    #加入现在我们要求面积,由于是__开头的外部无法调用
    # area=r1.__width* r1.__length#错误的
    # print(area)

    #为了能调用内部(类的__属性)的需要调用接口函数aera
    print(r1.aera())


    面向对象的优点:
    从编程进化论我们得知,面向对象是一种更高级别的结构化编程方式,它的好处就是以下两点:
    1、通过封装明确内外,你作为类的缔造者,你是上帝,上帝造物的逻辑你无需知道(你知道tm也成不了上帝),上帝想让你知道的你才能知道,这样就明确了划分了等级,物就是调用者,上帝就是物的创造者
    2、通过继承+多态在语言层面支持了归一化设计
    注意:不用面向对象语言(即不用类(class)),一样可以归一化(如范文件概念,游戏行业的一切皆精灵),一样可以封装(通过定义模块和接口),只是用面向对象语言可以直接用语言元素显示声明这些而已


    python用常用的术语:
    抽象/实例 组合 封装/接口 派生/继承/继承结构 泛化/特化 多态 自省/反射















  • 相关阅读:
    读书笔记--Linux Shell脚本攻略
    深入理解javascript原型链
    javascript基本类型及类型转换
    ECMAScript6 Promise
    git初体验
    走进git
    Dom编程优化
    go 递归实现快排
    go语言排序
    实现一个迭代器类
  • 原文地址:https://www.cnblogs.com/jianchixuexu/p/11688799.html
Copyright © 2011-2022 走看看