面向对象编程的奥秘:封装与继承

 

 新书上架~👇全国包邮奥~

python实用小工具开发教程icon-default.png?t=N7T8http://pythontoolsteach.com/3

 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~

目录

一、封装的魅力

封装的应用

封装示例

二、继承的力量

继承的应用

继承示例

三、总结


一、封装的魅力

    在面向对象编程的世界里,封装是一项基础且至关重要的特性。它允许我们将对象的属性和方法隐藏在类的内部,只暴露必要的接口给外部世界。这样做的好处在于,它保护了数据的完整性和安全性,同时也使得代码更加清晰、易于维护。

封装的应用

  • 属性封装:通过将对象的属性设置为私有(private),我们可以在类的内部对数据进行操作,而外部代码只能通过公共的getter和setter方法来访问和修改这些属性。
  • 方法封装:同样地,将方法封装在类内部可以确保只有经过授权的代码才能调用这些方法,进一步提高了代码的安全性。

封装示例

    假设我们有一个表示坦克的类(Tank),其中包含了坦克的一些属性(如速度、火力等)和一些方法(如移动、射击等)。通过封装,我们可以将这些属性和方法隐藏在Tank类内部,只暴露必要的接口给外部代码使用。这样,当外部代码需要使用坦克时,只需要通过Tank类提供的接口进行操作即可,无需关心内部的实现细节。

二、继承的力量

    继承是面向对象编程中的另一个重要特性,它允许我们创建一个新的类(子类),继承自一个已存在的类(父类)。子类将继承父类的所有属性和方法(除非被标记为私有),同时还可以添加自己的属性和方法。这使得代码复用变得更加容易,也提高了代码的可维护性。

继承的应用

  • 代码复用:通过继承,我们可以将已存在的类的代码复用到新的类中,避免了重复编写相同的代码。
  • 扩展功能:子类可以在继承父类的基础上添加自己的属性和方法,从而扩展父类的功能。

继承示例

    以我们上面的Tank类为例,假设我们现在需要创建一个表示特殊坦克(如重型坦克)的类(HeavyTank)。由于重型坦克也是坦克的一种,因此我们可以让HeavyTank类继承自Tank类。这样,HeavyTank类就可以继承Tank类的所有属性和方法,同时还可以添加自己特有的属性和方法(如更厚的装甲、更强的火力等)。

三、总结

    面向对象编程中的封装和继承是两大核心特性,它们共同构成了面向对象编程的基础。通过封装,我们可以将数据和方法隐藏在类的内部,保护数据的完整性和安全性;通过继承,我们可以复用已存在的代码,提高代码的可维护性和可扩展性。在实际开发中,我们应该充分利用这两个特性来构建高质量、易于维护的代码库。

 非常感谢您花时间阅读我的博客,希望这些分享能为您带来启发和帮助。期待您的反馈与交流,让我们共同成长,再次感谢!

👇热门内容👇 

python使用案例与应用_安城安的博客-CSDN博客

软硬件教学_安城安的博客-CSDN博客

Orbslam3&Vinsfusion_安城安的博客-CSDN博客

网络安全_安城安的博客-CSDN博客

教程_安城安的博客-CSDN博客

python办公自动化_安城安的博客-CSDN博客

👇个人网站👇

安城安的云世界

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenWrt U盘安装使用 详细教程 x86/64平台 软路由实测 系列一

1 官方稳定 版:OpenWrt 23.05 OpenWrt Downloads #根据实际情况选择 PC支持uefi,选择版本:https://downloads.openwrt.org/releases/23.05.3/targets/x86/64/openwrt-23.05.3-x86-64-generic-ext4-combined-efi.img.gz 2 rufus 制作U盘启动 3 制作好的U盘,接入主…

Maven多环境打包配置

一、启动时指定环境配置文件 在启动springboot应用的jar包时,我们可以指定配置文件,通常把配置文件上传到linux服务器对应jar包的同级目录,或者统一的配置文件存放目录 java -jar your-app.jar --spring.config.location/opt/softs/applicat…

新能源汽车的电驱热管理

前言 新能源汽车的电驱热管理是指维持电动汽车电池、电机和电控系统在适宜的工作温度范围内,保障车辆高效、安全、稳定运行的技术方案。随着新能源汽车的快速发展和普及,电驱热管理技术也日益成为关注焦点。本文将从电池、电机和电控系统三个方面介绍新…

Linux--线程的认识(一)

线程的概念 线程(Thread)是操作系统中进行程序执行的最小单位,也是程序调度和分派的基本单位。它通常被包含在进程之中,是进程中的实际运作单位。一个线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线…

【leetcode面试经典150题】-80. 删除有序数组中的重复项 II

【leetcode面试经典150题】-80. 删除有序数组中的重复项 II 1 题目介绍2 个人解题思路2.1 代码2.2 思路 3 官方题解 1 题目介绍 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组…

【DZ模板】克米设计APP手机版本地化+完美使用

模版介绍 【DZ模板】价值288克米设计APP手机版DZ模板 数据本地化完美使用 腾讯官方出品discuz论坛DIY的后台设置,功能齐全,论坛功能不亚于葫芦侠,自定义马甲,自定义认证,自定义广告,完全可以打造出自己想…

Redis教程(十五):Redis的哨兵模式搭建

一、搭建Redis一主二从 分别复制三份Redis工作文件夹,里面内容一致 接着修改7002的配置文件,【redis.windows-service.conf】 port 7002 改成 port 7002 slaveof 127.0.0.1 7001 7003也同样修改 port 7003 slaveof 127.0.0.1 7001 这样就指定了700…

从0开始带你成为Kafka消息中间件高手---第三讲

从0开始带你成为Kafka消息中间件高手—第三讲 实际上来说,每次leader接收到一条消息,都会更新自己的LEO,也就是log end offset,把最后一位offset 1,这个大家都能理解吧?接着各个follower会从leader请求同…

读人工智能时代与人类未来笔记14_管控人工智能

1. 管控人工智能 1.1. 历史上的战场进一步推进到与数字网络相连的所有地方 1.2. 数字程序现在控制着一个由众多实体系统构成的庞大且仍在不断增长的领域,而且越来越多的此类系统已实现网络化 1.2.1. 在某些情况下甚至连门锁和冰箱都实现了网络化 1.2.2. 这催生出…

vue3中element-plus下拉菜单与图标的使用

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: h…

十、通配符和正则表达式

10.1 通配符 通配符是由shell处理的, 它只会出现在 命令的“参数”里。当shell在“参数”中遇到了通配符 时,shell会将其当作路径或文件名去在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进 行代换(路径扩展);否则就将该通配…

21.Happens-Before原则

文章目录 Happens-Before原则1.Happens-Before规则介绍2.规格介绍2.1.顺序性规则(as-if-serial)2.2.volatile规则2.3.传递性规则2.4.监视锁规则2.5.start规则2.6.join()规则 Happens-Before原则 JVM内存屏障指令对Java开发工程师是透明的,是JMM对JVM实现的一种规范和…

HE TB PPDU MU-RTS

看起来像是MU-RTS的触发帧的应答不是HE TB PPDU,而是传统得的帧,应答CTS。 非AP 的STA,是不能发送触发帧,也就是说,触发帧,只能是由AP发送给STA

RedHat9 | DNS剖析-配置主DNS服务器实例

一、实验环境 1、BIND软件包介绍 BIND软件是一款开放源码的DNS服务器软件,由美国加州大学Berkeley分校开发和维护,全称为Berkeley Internet Name Domain。该软件在DNS(域名系统)领域具有重要地位,是目前世界上使用最…

网站笔记:huggingface model memory calculator

Model Memory Utility - a Hugging Face Space by hf-accelerate 这个工具可以计算在 Hugging Face Hub上托管的大型模型训练和执行推理时所需的vRAM内存量。模型所需的最低推荐vRAM内存量表示为“最大层”的大小,模型的训练大约是其大小的4倍(针对Adam…

AI播客下载:The Logan Bartlett Show Podcast(AI创业投资主题)

Logan Bartlett Show Podcast是一个播客,主持人Logan Bartlett与科技界的领导者以及投资者进行对话,讨论他们在运营或投资企业中学到的经验教训,主要集中在科技创投领域。 Logan Bartlett 是 Redpoint Ventures 的投资人,并且在该…

用户态下屏蔽全局消息钩子 —— ClientLoadLibrary 指针覆盖

目录 前言 一、研究 SetWindowsHookEx 的机制 二、概念验证 三、运行效果分析 四、总结与展望 参考文献 原文出处链接:[https://blog.csdn.net/qq_59075481/article/details/139206017] 前言 SetWindowsHookEx 函数帮助其他人员注入模块到我们的进程&#x…

蓝桥杯嵌入式国赛笔记(2):拓展板按键程序设计

目录 1、前言 2、电路原理 3、代码编写 3.1 读取Btn电压 3.2 检索按键 3.3 main文件编写 3.3.1 进行变量定义 3.3.2 AD_Key函数 3.3.3 LCD函数 3.3.4 main函数 3.3.5 完整代码 4、测试 5、总结 1、前言 本文进行拓展板按键程序设计,拓展板的按键是通…

Pycharm在下载安装第三方库时速度慢或超时问题 / 切换国内镜像地址

pycharm下载第三方库速度极慢,搜索了一下,发现方法非常乱,稍作整理。这个问题一般都会出现,在我们开发中遇到的常见问题,根据以下解决方法,基本可以解决,但是不能100%保证 Installing packages …

上位机图像处理和嵌入式模块部署(f103 mcu中的看门狗)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 项目开发中,我们总是希望固件代码能够稳定、健壮。为此,我们进行了各种软件质量管理,从需求开发开始&#xff0…