前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Python】面向对象 - 封装 ① ( 面向对象三大特性 | 封装 - 继承 - 多态 | 封装 - 程序世界 对 现实世界 的描述 | 程序世界中的隐藏属性和行为 | 定义私有成员 )

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

作者头像
韩曙亮
发布2023-10-11 19:44:41
发布2023-10-11 19:44:41
6.6K00
代码可运行
举报
运行总次数:0
代码可运行

一、面向对象三大特性

1、封装 - 继承 - 多态

面向对象三大特性 :

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

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

二、封装

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

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

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

将 现实世界 的 事物 的

  • 属性
  • 行为

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
复制
# 定义 Python 类
class Student:
    name = None
    age = None

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

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

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

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

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

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

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

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

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

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

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

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

4、定义私有成员

定义私有成员 :

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

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

  • 私有成员变量 :
代码语言:javascript
代码运行次数:0
运行
复制
    # 定义私有成员
    __address = None
  • 私有成员方法 :
代码语言:javascript
代码运行次数:0
运行
复制
    # 定义私有成员方法
    def __say(self):
        print(f"地址是 {self.__address}")

代码示例 :

代码语言:javascript
代码运行次数:0
运行
复制
"""
面向对象 - 封装
"""


# 定义 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
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、面向对象三大特性
    • 1、封装 - 继承 - 多态
  • 二、封装
    • 1、封装 - 程序世界 对 现实世界 的描述
    • 2、现实世界中的隐藏属性和行为
    • 3、程序世界中的隐藏属性和行为
    • 4、定义私有成员
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档