2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

走进面向对象编程的世界

  • 2021-03-05
  • 本文字数:2027 字

    阅读完需:约 7 分钟

走进面向对象编程的世界

面向对象编程(Object-Oriented Programming,OOP)是一种编程范式或编程方式,它使用类和对象来解决问题。


类只是定义任何有形事物的属性和能力的方式之一。然而,一个类并不能直接使用。为了访问类中定义的属性和方法,人们需要一个对象,即类的实例化。因此,一种编程范式,即创建类并使用它们的对象来解决任何给定的问题,这就是 OOP。


举个例子,若要计算出不同型号的汽车在一个月内的总油耗。以面向对象的编程范式,你可以创建一个名为 “Vehicle”的抽象类,该类包含基本属性,如车辆识别号码、颜色、注册号、类型、燃料类型、平均油耗等,这些属性是所有车辆共享的。


你也可以创建用输入、显示或使用这些属性值的函数或方法。现在,你可以实例化同一个类“Vehicle”的不同对象,如 HondaCity、Tesla、Maruti、Nissan 等,并相应地设置它们的属性。接下来,你只需要一个函数,接受一种车辆并计算总的油耗,就可以了,问题就这样解决了。



描述类的图像,以及上面示例的它的对象


现在,我们已经了解了面向对象的编程。让我们来谈谈共同支撑 OOP 世界的四大支柱。


这四大支柱是:


  • 抽象化封装

  • 数据封装

  • 继承

  • 多态


接下来,逐一解释这些概念。


抽象化更通俗的说法是封装。其原理是,我们只向用户展示相关的细节,将那些可能与用户不那么相关的背景细节隐藏起来。举个例子,当你开车的时候,你只需要关心方向盘、离合器或油门、刹车和齿轮,而你对它们的后端机械工作方式几乎一无所知。这就是数据抽象的一个例子。你只是向用户展示了方向盘、离合器等细节,而不是让用户关心这些内部工作的细节。



抽象的示例。


抽象化是隐藏背景细节,只向用户展示相关细节的过程。


数据封装是将所有元素封装在一起,形成一个内聚单元的过程。数据封装往往会导致内部的数据抽象。举个例子,当你坐在汽车里时,你有没有想过有多少不同的系统同时协作,从而实现汽车的各种功能?空气冷却系统、发动机、汽车的其他不同部件,如座椅、结构、头枕等,都安装在一辆车上,共同为你提供整体的舒适体验。


不同属性的部件聚集在一起,形成一个内聚单元,也就是汽车。而且,你只能看到相关的细节,但看不到它们的内部工作情况,这就是抽象化。因此,封装往往会导致抽象化。


从编程的角度来看,数据封装的一个很好的例子就是类。由于一个类有许多不同的属性和方法,对应不同的组件,因此它们是将数据封装成一个内聚单元的完美示例。



数据封装是将所有元素封装在一起,形成一个内聚单元的过程。


在 OOP 的世界里,下一个最重要的概念或原则就是继承。继承就像这个词所暗示的那样,继承父类的属性和方法(大多数是公共和保护性质的)。这允许子类或从另一个类(父类)继承的类,使用父类的现有特性,而无需再次重写它们。


举个例子,想象一下,你在一家电子商务公司工作,公司要求你开发他们的系统。你可以先创建一个名为User的类,其中包含了各种使用该接口的人都会有的基本属性和方法。比如公共属性,如姓名、性别、年龄、地址、出生日期等等。但也可以有多种类型的用户,如客户和卖家。


现在,为了解决这个问题,你可以简单地创建一个子类CustomerSeller,它们继承了类User。因此,User成为父类,而CustomerSeller成为它的子类。现在,这两个类将拥有父类的所有属性,且它们可以拥有自己的属性来添加到从父类继承的属性上。例如,子类Customer可以有额外的属性,如送货地址、首选商品类型、购买历史等。同样,另一个子类Seller也可以有其他属性,如卖家 ID、卖方商品清单、卖家历史等等。下图是对此的总结。



描述从父类到子类的继承的图像。


继承是指子类继承父类的属性和方法的过程。


接下来谈谈 OOP 的第四个也是最后一个支柱:多态


多态是指代码能够根据所处的环境进行自我变形,而不会对其性能造成太大的影响。换句话说,它是一个实体改变成任何生存和持续性能所需形式的能力。


举个现实生活中的例子。在任何时刻,你都是一个人,是某个公司 / 网站 / 服务的用户,是某个机构的员工,是女儿 / 儿子,是姐姐 / 弟弟,也是人。你作为一个人,随着不同的情况和环境,你适应了多少种形式和角色。你就是多态的最佳例子。你在人生的不同阶段扮演着不同的角色,即使你可能会随着每个角色的变化而稍有改变,但从根本上说,你还是那个始终如一的你。因此,我们会根据不同的情况变形为各种不同的形态,从而在日常生活中实现多态化。


在编程方面,想象你开发了一个软件。现在,你的软件应该能够适应操作系统的变化、计算能力的变化、其他工作条件的变化,且还能保持运行。因此,你的软件需要具备执行多态性的能力。


多态是指实体根据自己所处的环境进行变形或调整而不影响其性能的能力。


因此,如果任何一种编程范式都是基于使用类和对象,且遵循四个原则:抽象、封装、继承和多态,那么它就是一种面向对象的编程方法。


作者介绍:


Ananya Banerjee,德克萨斯州大学达拉斯分校计算机科学研究生。


原文链接:


https://towardsdatascience.com/introducing-you-to-the-world-of-oop-object-oriented-programming-95c33ae4df2

2021-03-05 14:282049
用户头像
刘燕 InfoQ高级技术编辑

发布了 1123 篇内容, 共 602.0 次阅读, 收获喜欢 1982 次。

关注

评论

发布
暂无评论
发现更多内容

新闻速递丨Altair RapidMiner 数据分析和 AI 平台助力企业加速智能升级:扩展智能体 AI 及分析生态系统

Altair RapidMiner

人工智能 机器学习 AI 数据分析 RapidMiner

数据采集故障频发,中控技术靠SeaTunnel实现日均TB级核心数据同步任务0出错

白鲸开源

大数据 开源 Meetup Apache SeaTunnel 中控技术

增量补丁交付模式下的高效审查策略:以GScloud为例

inBuilder低代码平台

软件开发 增量补丁 GScloud 云服务平台

在AI技术唾手可得的时代,挖掘新需求成为核心竞争力——某知名自动化脚本项目需求洞察

qife122

AI编程 自动化脚本

前端新人最怕的“居中问题”,八种CSS实现居中的方法一次搞懂!

伤感汤姆布利柏

专升本服务管理平台

深圳亥时科技

2026企业海外营销预算规划模板:如何科学分配市场费用?

Wolink

出海 海外社媒营销 海外营销推广 海外红人营销 品牌推广

海外推广终极指南:2026年必须掌握的10大高回报渠道与策略

Wolink

跨境电商 海外社媒营销 海外营销推广 品牌出海 海外红人营销

别再让开发拖垮业务!低代码+AI三连击,效率翻倍

引迈信息

预算有限?中小企业海外推广的7个低成本破局之道

Wolink

跨境电商 品牌营销 海外社媒营销 海外营销推广 海外社媒推广

应用案例实践 | 基于“隐语SecretFlow”多方安全分析的智能化理赔

隐语SecretFlow

开源 数据分析 隐私计算 多方安全计算 多方安全分析

MES系统在智能工厂中的应用

万界星空科技

制造业 智能工厂 mes 万界星空科技mes 智能制造数字化转型

国内首个!火山引擎推出融合国家级智库理论与大规模实战验证的 Data Agent 评测体系

科技新消息

启信宝获得法博会“行业洞见奖”,相关服务即将登陆“深律通”

合合技术团队

人工智能 大数据 算法

企业级 AI 问数产品如何实现单轮问答?

察言观数 AskTable

智能问答 NL2SQL 智能问数 AI 问数 数据库 AI 分析

LLM 时代,DataAgent × WhaleTunnel 如何将数据库变更瞬时 “转译” 为洞察?

白鲸开源

AI 数据同步 LLM 白鲸开源 WhaleTunnel

Proofpoint再次荣膺Gartner数字通信治理与归档解决方案领导者

qife122

人工智能 网络安全

极客时间PGSQL训练营毕业总结

李某人

极客时间 训练营 PgSQL

司马阅与宇见咨询达成生态战略合作,携手赋能企业增长

司马阅

Last Call | Siemens、Forrester、LTTS等全球行业专家在线分享数据科学与AI实战经验,点击报名!

Altair RapidMiner

人工智能 AI 数据科学

基于时序数据库 IoTDB 实现成果 IoTDB-FS 荣获“挑战杯”擂主(全国第一名)

Apache IoTDB

从定位到引爆:为新品牌量身定制的冷启动品牌推广四步法

Wolink

跨境电商 海外媒体 海外社媒营销 海外营销推广 品牌出海

2025 ChatBI 产品选型推荐:智能问数+归因分析+报告生成

Aloudata

数据分析 agent ChatBI 智能问数

别只调模型!RAG 检索优化真正该测的,是这三件事

测试人

打造智能通知中心:利用n8n的HTTP Request节点聚合多平台消息

测试人

原型污染攻击工具揭秘:Prototype Pollution Gadgets Finder

qife122

漏洞挖掘 原型污染

走进面向对象编程的世界_语言 & 开发_Ananya Banerjee_InfoQ精选文章