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

news/2024/7/7 20:39:23 标签: java, jvm, 开发语言

目录

私有属性和私有方法

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.niftyadmin.cn/n/5535314.html

相关文章

T113基于评估板SDK配置PD引脚异常

使用PD0/PD1/PD2作为IO输入时,发现输入检测到的值异常,断开输入的信号,直接示波器打IO口,还能发现波形信号,猜测该引脚存在引脚复用情况。 原因 这三个引脚在默认系统是作为显示相关引脚功能。 解决方法 1 ) Uboot修改

go Channel原理 (二)

Channel 设计原理 不要通过共享内存的方式进行通信,而是应该通过通信的方式共享内存。 在主流编程语言中,多个线程传递数据的方式一般都是共享内存。 Go 可以使用共享内存加互斥锁进行通信,同时也提供了一种不同的并发模型,即通…

[Microsoft Office]Word设置页码从第二页开始为1

目录 第一步:设置页码格式 第二步:设置“起始页码”为0 第三步:双击页码,出现“页脚”提示 第四步:选中“首页不同” 第一步:设置页码格式 第二步:设置“起始页码”为0 第三步:双…

Elasticsearch集群部署(下)

目录 上篇:Elasticsearch集群部署(上)-CSDN博客 七. Filebeat 部署 八. 部署Kafka 九. 集群测试 链接:https://pan.baidu.com/s/1AFXSmDdY5xBb7g35ipKoaw?pwdfa9m 提取码:fa9m 七. Filebeat 部署 为什么用 F…

概述:监督学习(分类,回归)与无监督学习(聚类)

目录: 一、监督学习:1.什么是监督学习:2.监督学习类型: 二、无监督学习1.什么是无监督学习:2.无监督学习类型: 一、监督学习: 1.什么是监督学习: 当前创造市场价值的机器学习中99%都是监督学习。监督学习…

API-正则表达式

学习目标: 掌握正则表达式 学习内容: 什么是正则表达式语法元字符修饰符 什么是正则表达式: 正则表达式是用于匹配字符串中字符组合的模式。在JavaScript中,正则表达式也是对象。 通常用来查找、替换那些符合正则表达式的文本&a…

Django实现部门管理功能

在这篇文章中,我们将介绍如何使用Django框架实现一个简单的部门管理功能。这个功能包括部门列表展示、添加新部门、编辑和删除部门等操作。 1. 项目设置 首先,确保你已经安装了Django并创建了一个新的Django项目。在项目中,我们需要创建一个名为​​app01​​的应用。 2.…

Linux多进程和多线程(五)进程间通信-消息队列

多进程(五) 进程间通信 消息队列 ftok()函数创建消息队列 创建消息队列示例 msgctl 函数示例:在上⼀个示例的基础上,加上删除队列的代码 发送消息 示例: 接收消息示例 多进程(五) 进程间通信 消息队列 消息队列是一种进程间通信机制,它允许两个或多个…