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

news2024/12/23 11:44:25

目录

私有属性和私有方法

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.coloradmin.cn/o/1894632.html

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

相关文章

数据看板/可视化大屏的实际价值到底是什么?详解数据可视化的实用之处

数据驾驶舱/数据看板/可视化大屏的实际价值,取决于使用者的实际需求。 华而不实?华就是实! 关于可视化大屏最广泛的争议,便是对其“华而不实”的批评,认为可视化大屏缺乏技术含量,只是一钟比较高级的“装饰…

WRF学习——使用CMIP6数据驱动WRF/基于ncl与vdo的CMIP6数据处理

动力降尺度 国际耦合模式比较计划(CMIP)为研究不同情景下的气候变化提供了大量的模拟数据,而在实际研究中,全球气候模式输出的数据空间分辨率往往较低(>100Km,缺乏区域气候特征,为了更好地研…

析构函数和拷贝构造函数

文章目录 析构函数1.析构函数的定义:2.析构函数的语法:3.析构函数的特性: 拷贝构造函数1.拷贝构造函数的定义:2.拷贝构造函数的语法3.拷贝构造函数的特性(1)拷贝构造函数是构造函数的一个重载形式**(这个其实也很好理解&#xff0…

鸿蒙小案例-首选项工具类

一个简单的首选项工具类 主要提供方法 初始化 init()方法建议在EntryAbility-》onWindowStageCreate 方法中使用 没多少东西,放一下测试代码 import { PrefUtil } from ./PrefUtil; import { promptAction } from kit.ArkUI;Entry Component struct PrefIndex {St…

关于软件本地化,您应该了解什么?

软件本地化是调整软件应用程序以满足目标市场的语言、文化和技术要求的过程。它不仅仅涉及翻译用户界面;它包含一系列活动,以确保软件在目标语言环境中可用且相关。以下是您应该了解的有关软件本地化的一些关键方面: 了解范围 软件本地化是…

学生用小台灯什么牌子的好?列举出几款学生用台灯推荐

眼睛是我们感知世界的窗口,但近年来,儿童青少年的视力健康却受到了严重困扰。数据显示,近视问题在儿童群体中呈现出明显的增长趋势,这给他们的学习和生活带来了诸多不便。虽然现代科技的快速发展使得电子产品成为了我们生活中不可…

UE5.4新功能 - Texture Graph上手简介

TextureGraph是UE5.4还在实验(Experimental)阶段的新功能,该功能旨在材质生成方面达到类似Subtance Designer的效果,从而程序化的生成一些纹理。 本文就来简要学习一下。 1.使用UE5.4或以上版本,激活TextureGraph插件 2.内容视图中右键找到…

React@16.x(47)路由v5.x(12)源码(4)- 实现 Route

目录 1&#xff0c;原生 Route 的渲染内容2&#xff0c;实现 1&#xff0c;原生 Route 的渲染内容 对如下代码来说&#xff1a; import { BrowserRouter as Router, Route } from "react-router-dom"; function News() {return <div>News</div>; }func…

【前端】IntersectionObserver 实现图片懒加载和无限滚动

【前端】IntersectionObserver 实现图片懒加载和无限滚动 在前端开发中&#xff0c;性能优化是一个重要的考量因素。随着现代网页和应用的复杂性增加&#xff0c;确保页面快速加载和流畅运行变得越来越重要。本文将介绍一种强大的工具——IntersectionObserver API&#xff0c…

【Linux进阶】文件和目录的默认权限与隐藏权限

1.文件默认权限&#xff1a;umask OK&#xff0c;那么现在我们知道如何建立或是改变一个目录或文件的属性了&#xff0c;不过&#xff0c;你知道当你建立一个新的文件或目录时&#xff0c;它的默认权限会是什么吗&#xff1f; 呵呵&#xff0c;那就与umask这个玩意儿有关了&…

HTTP与HTTPS协议区别及应用场景

HTTP&#xff08;超文本传输​​协议&#xff09;和 HTTPS&#xff08;安全超文本传输​​协议&#xff09;都是用于通过网络传输数据的协议。虽然它们有一些相似之处&#xff0c;但在安全性和数据保护方面也存在显著差异。 在这篇博文中&#xff0c;我们将探讨 HTTP 和 HTTPS…

基于antv x6实现的组织架构图

X6 是基于 HTML 和 SVG 的图编辑引擎&#xff0c;基于 MVC 架构&#xff0c;用户更加专注于数据逻辑和业务逻辑。 一、业务背景 将组织树形结构图形化&#xff0c;更直观的展示个人所在的组织架构。 二、功能点 组织结构按需渲染&#xff0c;支持层级展开、收缩按需求自定义…

MySQL表的练习

二、创建表 1、创建一个名称为db_system的数据库 create database db_system; 2、在该数据库下创建两张表&#xff0c;具体要求如下 员工表 user 字段 类型 约束 备注 id 整形 主键&#xff0c;自增长 id N…

机器人控制系列教程之Stewart平台简介和运动学分析

Stewart平台简介及应用场景 六自由度 Stewart 并联机器人结构简图如下图所示&#xff0c;主要有一个固定平台和一个移动平台以及六个可伸缩的推杆组成&#xff0c;通常情况下&#xff0c;固定平台与底座连接&#xff0c;移动平台在空间具有六个自由度&#xff0c;通过六个推杆…

Webpack: 基于Sourcemap源码映射原理与使用技巧

概述 Sourcemap 协议 最初由 Google 设计并率先在 Closure Inspector 实现&#xff0c;它的主要作用就是将经过压缩、混淆、合并的产物代码还原回未打包的原始形态&#xff0c;帮助开发者在生产环境中精确定位问题发生的行列位置&#xff0c;例如&#xff1a; 在 Webpack 内…

【话题】IT专业入门,高考假期预习指南

IT专业入门&#xff0c;高考假期预习指南 亲爱的高考学子们&#xff0c; 七月的阳光&#xff0c;如同你们的梦想&#xff0c;炽热而明亮。当你们手中的笔落下最后一道题的答案&#xff0c;那不仅仅是对过去十二年寒窗苦读的告别&#xff0c;更是对未知世界探索的启程号角。你们…

为了SourceInsight从Linux回到Windows

什么是SourceInsight 现在上网搜索这个软件&#xff0c;大多数说他是一个代码阅读软件&#xff1b;但是在官方的说法里面&#xff0c;这是一款支持多语言的编辑器。大概长这样&#xff1a; 看起来十分老旧是吧&#xff0c;但是他其实他已经是第四代了哈哈哈。其实这个软件是我…

c++:动态内存变量

典型的C面向对象编程 元素 (1)头文件hpp中类的定义 (2)源文件cpp中类的实现&#xff08;构造函数、析构函数、方法&#xff09; (3)主程序 案例 (1)用C来编程“人一天的生活” (2)“人”的属性&#xff1a;name、age、male (3)“人”的方法&#xff1a;eat、work(coding/shop…

【SSL 1056】最大子矩阵 (多维DP)

题目大意 已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵&#xff0c;你的任务是找到最大的非空&#xff08;大小至少是 1 ∗ 1 1*1 1∗1&#xff09;子矩阵。 比如&#xff0c;如下 4 ∗ 4 4*4 4∗4 子矩阵 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2 的最大子矩阵是 …

构建LangChain应用程序的示例代码:53、利用多模态大型语言模型在RAG应用中处理混合文档的示例

许多文档包含多种内容类型&#xff0c;包括文本和图像。 然而&#xff0c;在大多数 RAG 应用中&#xff0c;图像中捕获的信息都会丢失。 随着多模态LLMs的出现&#xff0c;比如GPT-4V&#xff0c;如何在RAG中利用图像是值得考虑的。 本篇指南的亮点是&#xff1a; 使用非结…