当前位置: 首页 > news >正文

简介面向对象的封装、继承、多态和抽象

面向对象(Object-Oriented)的特点通常归纳为四个核心概念:封装继承多态抽象

1. 封装(Encapsulation)

定义: 封装是将对象的属性(数据)和方法(操作)打包在一起,隐藏对象的内部实现细节,只暴露出必要的接口给外部使用。

通俗解释: 封装就像是一个“黑箱子”,外部只需要知道如何使用这个“箱子”而不需要知道它是如何工作的。例如,驾驶汽车时,你只需要使用方向盘、油门和刹车(外部接口),而不必了解引擎内部的复杂工作原理。

好处:

  • 提高代码的安全性,防止外部直接访问或修改对象内部数据。
  • 使代码更易维护,修改内部实现不会影响到外部使用。

2. 继承(Inheritance)

定义: 继承是指一个类(子类)从另一个类(父类)继承属性和方法,子类可以直接使用父类的功能,也可以对其进行扩展或修改。

通俗解释: 继承就像家族遗传,子类继承了父类的“基因”(属性和方法),可以直接使用这些特性,还可以根据需要添加新的特性或改进父类的特性。例如,类是一个父类,企鹅类是子类,企鹅继承了鸟的特性(如有翅膀),但可以有自己的特性(如不会飞)。

好处:

  • 提高代码的复用性,避免重复代码。
  • 使代码结构更加清晰,通过继承关系理顺类与类之间的联系。

3. 多态(Polymorphism)

定义: 多态是指同一操作在不同对象上可以有不同的表现形式。它允许使用父类的引用指向子类的对象,并调用子类中的方法。

通俗解释: 多态就像是音乐会上的指挥棒,同样的指挥动作(操作),不同的乐器(对象)会发出不同的声音。例如,你有一个动物类,有一个叫声()方法,不同的动物(如)调用叫声()方法时会发出不同的声音(“汪汪”或“喵喵”)。

好处:

  • 提高代码的灵活性,允许同一接口在不同实现中表现出不同的行为。
  • 使得代码扩展更加容易,添加新类型时无需修改现有代码。

4. 抽象(Abstraction)

定义: 抽象是指对现实世界的复杂事物进行建模,提取出共性特征,忽略不重要的细节,从而形成一个抽象的类或接口。

通俗解释: 抽象就像设计蓝图,专注于事物的主要特性而忽略细节。例如,“车辆”可以是一个抽象的概念,它包含了所有车辆的共同特征(如有轮子、能行驶),而具体的车(如汽车、摩托车)则是这个抽象概念的具体实现。

好处:

  • 提高代码的可理解性,简化对复杂系统的建模。
  • 使得代码更易扩展,通过接口或抽象类可以定义通用的行为,而具体实现可以在不同的类中完成。

总结

  • 封装:保护数据,通过公开接口与外界互动。
  • 继承:复用代码,新类从现有类继承特性。
  • 多态:同一操作在不同对象上有不同表现。
  • 抽象:提取共性特征,忽略复杂细节。

===============================写在最后================================

大家可能会疑惑抽象为什么属于面向对象的四大核心特性,以往我们都说是3个。其实抽象并不是一个新增加的要素,而是面向对象编程(OOP)的四大核心特性之一,和封装、继承、多态一样重要。抽象这个概念在面向对象的思想中一直存在,它主要用于帮助开发者处理复杂系统的建模问题。

为什么有时不提到抽象?

在一些介绍面向对象编程的场合,可能会强调封装、继承和多态这三个概念,而没有单独提到抽象。原因可能包括以下几点:

  1. 概念的重叠性:在某些情况下,抽象可能被认为是其他概念的基础,比如封装和继承都依赖于抽象。因此,有时会默认抽象作为前提,而不单独列出。

  2. 不同的教学方式:一些教材或课程可能为了简化教学内容,选择先讲解封装、继承和多态,再通过这些特性引出抽象的概念。

  3. 重点不同:有些编程语言或编程环境中,抽象的表现形式可能不如其他特性那样明显,所以在实际应用中不一定会被单独提到。

抽象的重要性

抽象是面向对象编程中非常重要的特性,因为它帮助我们:

  • 简化问题:通过抽象,复杂的现实问题可以被简化成几个主要的概念。
  • 提高可维护性:通过定义抽象类或接口,代码的实现细节可以随时更改而不影响使用者。
  • 增强可扩展性:抽象让我们可以在不修改现有代码的基础上,轻松添加新的功能。

相关文章:

简介面向对象的封装、继承、多态和抽象

面向对象(Object-Oriented)的特点通常归纳为四个核心概念:封装、继承、多态和抽象。 1. 封装(Encapsulation) 定义: 封装是将对象的属性(数据)和方法(操作)打包在一起&…...

OpenCV + CUDA + cuDNN模块编译

简介 在追求高端性能与资源优化并重的应用场景中,如边缘计算设备或资源受限的开发板上运行YOLO等复杂深度学习模型,采用C结合OpenCV与GPU加速技术相较于传统的Python环境展现出显著优势。这种策略不仅极大地提升了执行效率,还显著降低了运行时…...

Redis 缓存预热、雪崩、穿透、击穿

缓存预热 缓存预热是什么 缓存预热就是系统上线后,提前将相关的缓存数据直接加载到缓存系统。避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题!用户直接查询事先被预热的缓存数据!解决方案 使用 PostConstr…...

仿RabbiteMq简易消息队列基础篇(gtest的使用)

TOC gtest介绍 gtest是google的一个开源框架,它主要用于写单元测试,检查自己的程序是否符合预期行为。可在多个平台上使用(包含Linux,MAC OC,Windows等)。它提供了丰富的断言,致命和非致命失败…...

图像处理中的图像梯度和幅值是什么???(通俗讲解)

在边缘检测和特征提取等任务中,图像的梯度和幅值是图像处理中非常重要的概念。 目录 一、图像的梯度1.1 专业解释1.2 通俗理解1.3 计算方式 二、梯度的幅值2.1 专业解释2.2 通俗理解2.3 计算方式 一、图像的梯度 1.1 专业解释 图像的梯度可以看作是图像中亮度或颜…...

01.计算机网络导论

引言 协议分层 协议分层使我们可以将大任务化简成几个更小、更简单的任务。模块化指的是独立的协议层。一个协议层(模块)可以定义为一个具有输入和输出而不需要考虑输入是如何变成输出的黑匣子。当向两台机器提供相同输入得到相同输出时,它…...

API网关:SpringCloud GateWay

一. 网关的作用及背景 1.API网关的作用 请求路由 在我们的系统中由于同一个接口新老两套系统都在使用,我们需要根据请求上下文将请求路由到对应的接口。 统一鉴权 对于鉴权操作不涉及到业务逻辑,那么可以在网关层进行处理,不用下层到业务…...

【Leetcode 383】赎金信 —— 哈希表 有注解

给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 1: 输入&#…...

Linux 常见的冷知识集锦

一、前言 本文旨在记录那些常见的Linux概念和名词,但这些又没经常直接使用到,更多在底层运行,见过却又不是特别清楚的碎片知识,以温故知新。 二、知识点和概念说明 2.1、POSIX标准/协议 POSIX(Portable Operating S…...

【喜报】科大睿智祝贺青岛海信网络科技通过CMMI5级评估

​ 青岛海信网络科技股份有限公司成立于1998年,是海信集团B2B产业的核心力量。其主要从事城市交通、公共交通、智慧公路、交通枢纽、智慧停车、智能网联、大数据管理、城市治理、应急管理、轨道交通智能化和医院、校园、园区等智能化建设领域的产品和解决方案开发、…...

2024全国大学生电子设计大赛全国初赛 E题 三子棋游戏装置 一等奖满分最简方案

感想:电赛初赛控制类题还是蛮简单的,别被五花八门的硬件搞懵了(决赛当我没说)。抓住核心,理念都是通用的。我是计科专业的,因此选择的控制类E题,相对来说背的知识要少很多,更考验智商…...

尚品汇-ES(三十一)

目录: (1)封装搜索相关实体对象 (2)搜索接口封装 (3)在service-list-client模块添加远程接口 (1)封装搜索相关实体对象 搜索参数实体:SearchParam 搜索参…...

NC 跳台阶

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 一只青蛙一次…...

linux 文件编程

1. 标准IO 也称为标准输入输出(Standard Input/Output),是计算机编程中一种常见的IO操作方式,特别是在C语言及其衍生语言中广泛使用。它主要通过标准C库中的函数来实现,提供了丰富的接口用于数据的输入和输出。 文本文…...

【后端速成 Vue】实现动态表白墙

前言: 通过前面几篇的文章的讲解,已经学习到了很多的 Vue 指令了,那么现在就将学习到的指令利用起来,做一个小的 demo。 最终效果图: 通过效果图可以发现,一共有这几个功能: ● 渲染列表&…...

【日常开发】 java返回ECharts数据结构封装

java返回ECharts数据结构封装 一、前端页面示例图如下: 二、准备测试数据: 三、后端 格式封装代码: 四、最终结果: 🎈边走、边悟🎈迟早会好 一、前端页面示例图如下: 二、准备测试数据&am…...

Table表格控件实现单选功能

Table表格控件实现单选功能 <el-tableref"tableRef"height"385"style"--el-table-border-color: none"row-key"contractId"highlight-current-rowsingle-selectselect"handleSelect":data"contractInfo">&l…...

AI技术加速落地 港科广联手思谋打开智能缺陷检测新纪元

AI 技术应用落地的元年&#xff0c;工业是主战场&#xff0c;尤其是工业缺陷检测。 在“生产制造-缺陷检测-工艺优化-生产制造”的智能制造闭环链条中&#xff0c;基于AI的智能缺陷检测扮演着“把关者”的角色。但这个把关者长期以来却缺少一个称手的工具——样本量大、精度高…...

Python爬虫开发:BeautifulSoup、Scrapy入门

在现代网络开发中&#xff0c;网络爬虫是一个非常重要的工具。它可以自动化地从网页中提取数据&#xff0c;并且可以用于各种用途&#xff0c;如数据收集、信息聚合和内容监控等。在Python中&#xff0c;有多个库可以用于爬虫开发&#xff0c;其中BeautifulSoup和Scrapy是两个非…...

数据科学、数据分析、人工智能必备知识汇总-----常用数据分析方法-----持续更新

数据科学、数据分析、人工智能必备知识汇总-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/140174015 文章目录 一、对比分析法1. 按时间和地区2. 同比和环比 二、分组分析法三、结构分析法四、交叉分析法五、矩阵分…...

AI Agent在智能风控中的实战:多智能体欺诈检测与预警

AI Agent在智能风控中的实战:多智能体欺诈检测与预警 你有没有过明明是正常交易却被银行冻结账户的糟糕体验?或是听说过某电商平台上线新活动首日就被黑产团伙薅走数千万补贴的新闻?随着黑产欺诈向团伙化、专业化、动态化演进,传统依赖规则引擎、单模型机器学习的风控体系已…...

DeepSeek代码质量评估实战手册:7步完成从混沌到可度量的质变跃迁

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;DeepSeek代码质量评估的底层逻辑与核心价值 DeepSeek代码质量评估并非简单地统计行数或检测语法错误&#xff0c;而是基于多维语义理解构建的推理系统。其底层逻辑融合了静态分析、符号执行与大语言模型生成式…...

对比 Token Plan 与按量计费在 Taotoken 平台上的成本体感差异

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比 Token Plan 与按量计费在 Taotoken 平台上的成本体感差异 对于个人开发者或项目管理者而言&#xff0c;在接入大模型服务时&a…...

MBTI性格测试

简介 MBTI&#xff08;Myers‑Briggs Type Indicator&#xff0c;迈尔斯‑布里格斯类型指标&#xff09;是基于荣格心理类型理论发展出的性格类型工具&#xff0c;由凯瑟琳库克布里格斯及其女儿伊莎贝尔布里格斯迈尔斯创建。它通过四对偏好维度将个体的认知与行为倾向归纳为 16…...

中兴光猫终极管理指南:解锁工厂模式与Telnet权限的实战教程

中兴光猫终极管理指南&#xff1a;解锁工厂模式与Telnet权限的实战教程 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 掌握中兴光猫的设备管理和权限获取能力是网络管理员和技术爱好者…...

长期使用Token Plan套餐在项目开发中的成本观察

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期使用Token Plan套餐在项目开发中的成本观察 在AI驱动的项目开发中&#xff0c;成本控制与预算管理是团队负责人必须面对的现实…...

谷氨酸发酵过程的软测量建模【附模型】

✨ 长期致力于软测量、谷氨酸发酵、动力学模型、支持向量机、高斯过程、变量选择、异常状态研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;多阶段高斯…...

AhMyth位置跟踪:GPS定位与地理围栏技术深度解析

AhMyth位置跟踪&#xff1a;GPS定位与地理围栏技术深度解析 【免费下载链接】AhMyth Cross-Platform Android Remote Administration Tool | The only maintained version of AhMyth on github | A revival of the original repository at https://GitHub.com/AhMyth/AhMyth-An…...

Windows Cleaner如何5步解决C盘爆红问题?完全指南助你释放宝贵空间

Windows Cleaner如何5步解决C盘爆红问题&#xff1f;完全指南助你释放宝贵空间 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否曾经面对C盘爆红的警告束手无…...

Claude服务治理架构升级(生产环境零停机迁移实录)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Claude服务治理架构升级&#xff08;生产环境零停机迁移实录&#xff09; 为应对日益增长的推理请求量与多租户策略精细化需求&#xff0c;我们对Claude服务治理层实施了从单体API网关向云原生服务网格的平滑…...