Python——面向对象编程(类和对象)2

目录

私有属性和私有方法

01.应用场景及定义方式

02.伪私有属性和私有方法

 继承

1.1继承的概念、语法和特点

1.继承的语法:

2.专业术语:

3.继承的传递性

1.2方法的重写

1.覆盖父类的方法

2.对父类方法进行扩展

关于super

1.3 父类的私有属性和私有方法

多继承

2.1多继承的使用注意事项


私有属性和私有方法

01.应用场景及定义方式

应用场景:

        1.在实际开发中,对象某些属性或方法可能只希望在对象的内部被使用。而不希望在外部被访问到

        2.私有属性就是对象不希望公开的属性

        3.私有方法就是对象不希望公开的方法

定义方法:

        在定义属性或方法时,在属性名或者方法名前增加两个下划线,定义的就是私有属性或方法。

02.伪私有属性和私有方法

        1.在给属性,方法命名时,实际是对名称做了一些特殊处理,使得外界无法访问到。

        2.处理方式:在名称前加上_类名 => _类名_名称

ps:在日常开发中,不要使用这种方式,访问对象的私有属性或私有方法。

 继承

继承分为单继承和多继承

面向对象的三大特性:

        1.封装根据职责属性方法封装到一个抽象的类中。

        2.继承实现代码的重用,相同的代码不需要重复的编写。

        3.多态不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度

 

1.1继承的概念、语法和特点

继承的概念子类拥有父类所有方法和属性。 

1.继承的语法:

        1.子类继承自父类,可以直接享受父类中已经封装好的方法,不需要再次开发。

        2.子类中应该根据职责,封装子类特有的属性和方法

2.专业术语:

        1.Dog类是Animal类的子类,Animal类是Dog类的父类,Dog类从Animal类继承。

        2.Dog类是Animal类的派生类,Animal类是Dog类的基类,Dog类从Animal类派生。

3.继承的传递性

        1.C类从B类继承,B类又从A类继承。

        2.那么C类具有B类和A类的所有属性和方法。

        子类有用父类以及父类的父类中封装的所有属性和方法

1.2方法的重写

1.子类拥有父类的所有方法和属性

2.子类继承自父类,可以直接享受父类中已经封装好的方法,不需要再次开发。

应用场景:当父类的方法实现不能满足于子类需求时,可以对方法进行重写

重写父类方法有两种情况:

        1.覆盖父类的方法。

        2.对父类方法进行扩展。 

1.覆盖父类的方法

如果在开发中,父类的方法实现和子类的方法实现完全不同,就可以使用覆盖的方式在子类中重新编写父类的方法实现

具体的实现方式就相当于在子类中定义了一个和父类同名的方法并且实现。

 重写之后,在运行时,只会调用子类中重写的方法,而不再会调用父类封装的方法

2.对父类方法进行扩展

如果在开发中,子类的方法实现中包含父类的方法实现(父类原本封装的方法实现是子类方法的一部分

就可以使用扩展的方式:

        1.在子类中重写父类的方法。

        2.在学要的位置使用super().父类方法来调用父类方法的执行。

        3.代码其他的位置针对子类的需求,编写子类特有的代码实现

关于super

        1.在python中super是一个特殊的类

        2.super()就是使用super类创建出来的对象。

        3.最常使用的场景就是在重写父类方法时,调用在父类中封装的方法实现

1.在开发时,父类名和super()两种方式不要混用。

2.如果使用当前子类名调用方法,会形成递归调用,出现死循环

1.3 父类的私有属性和私有方法

1.子类对象不能在自己的方法内部、直接访问父类的私有属性私有方法

2.子类对象可以通过父类公有方法间接访问到私有属性或私有方法

        私有属性、方法时对象的隐私,不对外公开,外界以及子类都不能直接访问。

        私有属性、方法通常用于做一些内部的事情。

1.B的对象不能直接访问_num2属性

2.B的对象不能在demo方法内访问_num2属性

3.B的对象可以在demo方法内,调用父类的test方法

4.父类的test方法内部,能够访问_num2属性和_test方法 

多继承

子类可以拥有多个父类,并且具有所有父类的属性和方法

例如:孩子会继承自己父类母类特性

2.1多继承的使用注意事项

提示:开发时,应该尽量避免这种容易产生混淆的情况!——如果父类之间存在同名的属性或者方法,应该尽量避免使用多继承。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/866313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机械拆装-基于Unity-装配功能的实现

目录 1. 装配场景的相机控制 2. 鼠标拖拽和旋转功能的实现 2.1 鼠标拖拽 2.2 物体旋转 3. 零件与装配位置的对应关系 4. 轴向装配的准备位置 5. 装配顺序的实现 5.1 标签提示 5.2 定义一个变量记录步骤数值 1. 装配场景的相机控制 开始装配功能时,需要将相机调…

vector与list的简单介绍

1. 标准库中的vector类的介绍: vector是表示大小可以变化的数组的序列容器。 就像数组一样,vector对其元素使用连续的存储位置,这意味着也可以使用指向其元素的常规指针上的偏移量来访问其元素,并且与数组中的元素一样高效。但与数…

1975react社区问答管理系统开发mysql数据库web结构node.js编程计算机网页源码

一、源码特点 react 社区问答管理系统是一套完善的完整信息管理类型系统,结合react.js框架和node.js后端完成本系统,对理解react node编程开发语言有帮助系统采用node框架(前后端分离)),系统具有完整的源…

6种ETL计算引擎介绍

目录 一、ETL计算引擎定义 二、ETL计算引擎的功能和特性 三、6种ETL计算引擎 1、MapReduce 2、Tez 3、Spark 4、Flink 5、ClickHouse 6、Doris 一、ETL计算引擎定义 ETL(Extract, Transform, Load)计算引擎是用于执行ETL过程中数据转换阶段的关键组件之一…

mac如何压缩视频大小不改变画质,mac怎么压缩视频软件

在数字时代,视频已成为信息传递和娱乐消遣的重要媒介。然而,视频带来的愉悦体验背后,是日益增长的存储和分享压力。大视频文件不仅占用大量存储空间,上传和下载也变得异常缓慢。那么,如何才能有效压缩视频,…

ERROR: No matching distribution found for numpy

1.原因: 出现这两行英文是因为原先输入pip install numpy的方式不安全,不被信任所以无法下载。 2.解决方法: 改成以下命令执行: pip install numpy -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun…

2025年中国国际新能源汽车技术零部件及服务展览会

中国国际新能源汽车技术零部件及服务展览会,从设计到制造、从使用到服务,精准“链”接新能源汽车全产业链的技术供应商和汽车制造商,专业面向新能源造车供应链的行业盛会。2024展会回顾:在展会的3天里,有62家车企核心供…

共享拼购:创新商业模式引领小用户基数下的销售奇迹“

在瞬息万变的商业蓝海中,一个新颖且深具潜力的策略正悄然改变着游戏规则,它巧妙地避开了传统路径的束缚,以微妙却深远的调整,开辟出了一条通往成功的独特航道。我的一位合作伙伴,正是这一策略的实践者,他在…

数字媒体技术基础之:DNG 文件

DNG(Digital Negative)文件是一种用于存储原始图像数据的文件格式,由 Adobe Systems 于2004年开发并推广。DNG 是一种开放的、非专利的原始图像格式,旨在为不同相机制造商提供一个统一的存储格式。DNG 文件保存了原始的、未处理的…

C++时区转换

#include <iostream> #include "cctz/civil_time.h" #include "cctz/time_zone.h"// 时区转换库 // https://github.com/google/cctzint test() {for (cctz::civil_day d(2016, 2, 1); d < cctz::civil_month(2016, 3); d) {std::cout << &…

【设计模式】设计模式学习线路与总结

文章目录 一. 设计原则与思想二. 设计模式与范式三. 设计模式进阶四. 项目实战 设计模式主要是为了改善代码质量&#xff0c;对代码的重用、解耦以及重构给了最佳实践&#xff0c;如下图是我们在掌握设计模式过程中需要掌握和思考的内容概览。 一. 设计原则与思想 面向对象编…

qt6 获取百度地图(一)

需求分析&#xff1a; 要获取一个地图&#xff0c; 需要ip 需要根据ip查询经纬度 根据经纬度查询地图 另外一条线是根据输入的地址 查询ip 根据查询到的ip查地图‘ 最后&#xff0c;要渲染地图 上面这这些动作&#xff0c;要进行http查询&#xff1a; 为此要有三个QNet…

机器学习与AI大数据的融合:开启智能新时代

在当今这个信息爆炸的时代&#xff0c;大数据和人工智能&#xff08;AI&#xff09;已经成为推动社会进步的强大引擎。作为AI核心技术之一的机器学习&#xff08;Machine Learning, ML&#xff09;&#xff0c;与大数据的深度融合正引领着一场前所未有的科技革命&#xff0c;不…

电子画册制作的小秘密都在这篇文章了

电子画册作为现代营销和展示的重要工具&#xff0c;已经成为各类企业和个人宣传品的首选。相比传统印刷画册&#xff0c;电子画册不仅节省成本&#xff0c;还能通过多媒体元素增强视觉冲击力&#xff0c;提升用户互动体验。本文将介绍电子画册制作的基础步骤和关键要点&#xf…

电气-伺服(4)CANopen

一、CAN Controller Area Network ,控制器局域网&#xff0c;80年的德国Bosch的一家公司研发可以测量仪器直接的实时数据交换而开发的一款串行通信协议。 CAN发展历史 二、CAN 的osi 模型 CAN特性&#xff1a; CAN 的数据帧 三、CANopen 什么是CANopen CANopen 的网络模型 …

Unity In App Purchasing内购校验

1&#xff0c;利用收据验证混淆器 把后台的key填进去&#xff0c;点击自动生成一些文件 2&#xff0c;代码过滤 using UnityEngine.Purchasing.Security;在IAPManager.cs的 public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e)增加 #if !UNITY_EDITOR…

香橙派AIpro如何赋能AI+边缘流媒体设备

文章目录 &#xff08;一&#xff09;前言&#xff08;二&#xff09;AI边缘流媒体设备展示&#xff08;三&#xff09;赋能AI边缘流媒体设备1、准备开发环境2、在板子中下载编译安装SRS3、基本推拉流测试4、多路推流性能测试 &#xff08;四&#xff09;一些注意事项1、开发板…

springboot 篮球馆管理系统-计算机毕业设计源码21945

目 录 摘要 1 绪论 1.1选题背景 1.2研究意义 1.3论文结构与章节安排 2 篮球馆管理系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析 2.4 …

ctfshow sql注入

开启其他注入 web221 limit注入 给出查询语句 以及过滤逻辑为空 获取数据库名即可 limit 用于控制返回结果行数 limit后面似乎只能跟PROCEDURE ANALYSE( ) 函数了 PROCEDURE ANALYSE( ) 函数用于分析查询结果的函数 参数是用来控制函数的 这个参数的位置 可以放入报错函数 原…

MySQL—创建查看删除备份恢复数据库

创建数据库 创建数据库 LLF_DB01CREATE DATABASE LLF_DB01删除数据库DROP DATABASE LLF_DB01创建一个使用utf8字符集的数据库并带校对规则的数据库CREATE DATABASE hsp_db03 CHARACTER SET utf8 COLLATE utf8_bin 查看、删除数据库 显示所有的数据库SHOW DATABASES显示数据库…