【Python】面向对象 - 封装 ① ( 面向对象三大特性 | 封装 - 继承 - 多态 | 封装 - 程序世界 对 现实世界 的描述 | 程序世界中的隐藏属性和行为 | 定义私有成员 )





一、面向对象三大特性




1、封装 - 继承 - 多态


面向对象三大特性 :

  • 封装 ( Encapsulation ) : 将 数据 和 操作数据的方法 包装在一起 , 隐藏 数据的内部细节 , 防止外界的直接访问和修改 ;
    • 封装后 , 只能通过 对外提供的接口 , 对 封装在内部的属性和方法 进行 访问和操作 ;
  • 继承 ( Inheritance ) : 让 一个 实例对象 获取 另一个 实例对象 的 属性 和 方法 , 在不重写现有代码的基础上实现代码的重用 ;
    • 继承可以 实现出 类的层次结构 , 可以 扩展 现有父类的功能 ;
  • 多态 ( Polymorphism ) : 不同的 实例对象 对 想通的消息 作出不同响应 , 也就是调用想通类型实例对象 的 方法 有不同的行为 ;
    • 多态 通过 方法的 重载 ( Overloading ) 和 虚函数 ( Virtual Function ) 实现 ;
    • 多态 可以 提高代码的 灵活性 和 可维护性 , 使代码更加易于扩展和修改 ;

如果一门编程语言支持 面向对象 思想 , 那么就可以基于 类 创建 实例对象 , 使用 实例对象 实现具体的代码功能 , 同时支持 以上 封装 / 继承 / 多态 三大特性 ;





二、封装




1、封装 - 程序世界 对 现实世界 的描述


封装 ( Encapsulation ) : 将 数据 和 操作数据的方法 包装在一起 , 隐藏 数据的内部细节 , 防止外界的直接访问和修改 ;

  • 封装后 , 只能通过 对外提供的接口 , 对 封装在内部的属性和方法 进行 访问和操作 ;

将 现实世界 的 事物 的

  • 属性
  • 行为

通过描述 , 封装到 程序世界 中 ,

  • 现实世界 事物 属性 封装为 类的 成员变量 ,
  • 现实世界 事物 行为 封装为 类的 成员方法 ,

封装 , 可以实现 程序世界 对 现实世界 事物的描述 ;

在这里插入图片描述

封装代码示例 : 下面的代码 封装了 学生的 属性 和 行为 , 属性有 年龄 和 姓名 , 行为有 说话 ;

# 定义 Python 类
class Student:
    name = None
    age = None

    def say(self):
        print(f"{
      
      self.name} is {
      
      self.age} years old")

2、现实世界中的隐藏属性和行为


现实世界 中的 事物 , 有很多的 属性 和 行为 , 拿手机举例 :

对用户开放的 属性 和 行为 :

  • 属性 :
    • 品牌
    • 拍照像素
    • 重量
    • 体积
  • 行为 :
    • 打电话
    • 拍照
    • 接收短信

有些 属性 和 行为 不对用户开放 , 属于隐藏的 , 如 :

  • 隐藏属性 :
    • 摄像头驱动型号
    • 主板运行电压
    • 系统管理员权限
  • 隐藏行为 :
    • 内存管理
    • 内核运行
    • 佛波勒监控后门

3、程序世界中的隐藏属性和行为


现实世界 中 , 事物有 隐藏的 属性 和 行为 ,

将 现实世界 中的事物 映射到 程序世界 中 , 类 也有隐藏的 属性 和 行为 ,

  • 隐藏 的 属性 被称为 私有成员变量 ,
  • 隐藏 的 行为 被称为 私有成员方法 ;

隐藏的 属性 和 变量 , 又称为 私有成员 ;


4、定义私有成员


定义私有成员 :

  • 私有成员变量 : 以 双下划线 开头 __私有成员变量名 ;
  • 私有成员方法 : 以 双下划线 开头 __私有成员方法名 ;

下面的代码中 , 定义了 私有成员 :

  • 私有成员变量 :
    # 定义私有成员
    __address = None
  • 私有成员方法 :
    # 定义私有成员方法
    def __say(self):
        print(f"地址是 {
      
      self.__address}")

代码示例 :

"""
面向对象 - 封装
"""


# 定义 Python 类
class Student:
    name = None
    age = None

    # 定义私有成员
    __address = None

    # 定义私有成员方法
    def __say(self):
        print(f"地址是 {
      
      self.__address}")

    def __init__(self, name, age, address):
        self.name = name
        self.age = age
        self.address = address

猜你喜欢

转载自blog.csdn.net/han1202012/article/details/131585873
今日推荐