课时1:面向对象简介

简介: Java的面向对象编程(OOP)是其核心特性之一,强调模块化设计与重用。OOP具有三大特征:封装性、继承性和多态性。封装确保内部操作对外不可见;继承允许在已有类基础上扩展功能;多态支持类型转换和灵活处理。OOP设计流程包括分析(OOA)、设计(OOD)和编程(OOP),帮助开发者构建复杂而高效的程序。理解OOP的关键在于将其与生活中的合理场景类比,使抽象概念更易掌握。

课时1:面向对象简介


摘要:我们来了解一下最为重要的概念——Java的面向对象编程。Java语言最大的特点在于面向对象的编程设计。并且,面向对象的编程设计也随着Java自身的发展而不断发展。

1. Java的面向对象编程概念

2. 面向对象三个主要特征

 

01. Java的面向对象编程概念

 

同时,很多最初不支持面向对象编程的编程语言,也都开始向其转变。当然,要知道并非所有人都认为面向对象编程是完善的。不过,依然有许多开发者认为面向过程编程或者函数式编程更好。对于函数式编程,大家暂时不用过于急切,因为后续在Java中会涉及函数式编程的相关概念,在Scala中也会接触到相关内容。


从整体的设计角度而言,面向对象编程绝非凭空出现的。从整个行业趋势来讲,面向对象编程的支持是更为合理的。但凡事无绝对,至少70%-80%的开发者认同面向对象编程。

说到面向对象编程,就不得不提及传统的程序开发。我们知道,从最早一直流行至今的编程语言有C、C++以及Java。其中,C语言已成为面向过程开发的代表。而C++ 以及Java都是面向对象的编程语言。


大家要清楚C与C++出现的先后顺序,是先有C,再有C++,然后由C++ 衍生出了Java。实际上,C++ 在从C演变的过程中,受到了IBM的Smalltalk语言的启发,所以C++ 相较于C而言是较新的一种编程形式。


所谓面向过程,指的是面对一个问题的解决方案。例如,假设郭仁义同学是一位心灵手巧之人,有一天要给林强做个玩具,比如做一个会活动的小人。倘若有一天林强拿出去玩,不小心摔倒了,把玩具小人的胳膊摔断了,腿也摔折了,那这个玩具的胳膊若是摔坏了,到外面去配胳膊是配不到的,只能重新做一个胳膊,而且新做的胳膊有可能材质不一样。比如原本玩具是用紫檀木做的,结果发现紫檀木没了,只能找黄花梨木来做,材质就不一样了。


所以,相较于面向过程而言,面向过程更多是面对一个问题的解决方案,在多数情况下,不会进行重用的设计思考。


而面向对象主要的设计形式是模块化设计。举例来说,今天骑自行车出去,出去之后发现车链子坏了,是能在外面配到一条车链子,把车修好后继续骑行的。再假设,郭仁义和林强出去,假如车胎扎了,也能去换一个车胎


所以,面向对象的主要操作是模块化设计,并且能够进行重用配置,这就是面向对象的主要特征。

在整个面向对象的设计当中,更多时候考虑的是标准,这一点在汽车生产方面体现得尤为明显。汽车是由几万个零件组合而成的,不同的工厂生产不同的零件。


比如在日本有一家公司生产螺母,其螺母质量特别好,全世界都在采购。如果产品想要使用这种螺母,就需要告知其规格,对方根据这个规格生产出符合要求的螺母,就能正常使用了。就像苹果手机,后盖需要用一种特殊的螺丝刀才能打开,它也是有规格标准的,只要符合这个规格标准,就能用相应的螺丝刀打开。


所以,面向对象考虑的是基于标准的模块化设计,在使用时根据标准进行拼装,这就是面向对象设计的核心本质。

 

02. 面向对象三个主要特征

 

面向对象具有三个主要特征,分别为封装性、继承性以及多态性。


首先来看封装性,其最简概念在于内部的操作对外不可见。所谓安全,便是当内部操作皆不可被直接知晓、使用时,方能实现。这就如同家中设有保险箱,若王建告知安和敏自家保险箱密码是123,还声称十分安全,那安和敏或许便会在半夜设法前去打开,二者道理相通。


再谈谈继承性,这一概念相对更易理解。例如,假设林强拥有300亿资产,在其离世前,将这笔资产留给了郭仁义。那么,郭仁义便可基于这300亿资产,进一步构建自己的资金体系。当然,郭仁义也有可能在短时间内将这笔资产挥霍一空,比如其决定整日肆意花钱,或许不出一个月,便将这300亿资产耗费殆尽。所以,继承指的是在已有类或已有结构的基础上,持续进行功能的扩充。


事实上,在当下诸多设计中均会体现这一特性。以手机为例,手机极具代表性。如今人们不难发现,无论手机如何演变,其始终离不开通话功能。手机最初是基于通话功能构建的,而后又在通话功能的基础上增添了短信功能,这两项功能构成了手机的基础。


不过,最初的手机并无如今这般复杂的操作系统,相对较为简易、安全,而当下手机的操作系统虽存在被监听的情况,但归根结底,仍需通讯功能作为支撑。由此可见,其原本的设计是较为完善的,只是在后续开发过程中不断融入了新功能罢了。


再看计步器,起初它仅具备记录行走步数的功能,后来在此基础上,人们觉得功能不够丰富,便又增添了心率监测等功能,这便是在已有基础上持续开发拓展,体现了继承性这一特性。


接下来谈谈多态性,多态性是在继承性基础上拓展而来的概念,主要涉及类型的转换处理。例如,以某人举例,其原本为男性,后通过变性手术转变为女性,待至40岁时,又因个人意愿通过手术变回男性。


假设有一场所规定仅限男性和女性进入,那么经历过变性的这类人群按此规定便不符合进入条件。再假设某场所限定仅人类可进入,若携带宠物前往,自然也不符合准入要求。由此可知,多态性体现的是在一定范围内允许进行变化的一种处理形式。


上述内容便是面向对象的三个主要特征。当然,这三个特征还需我们逐步深入领会并消化,毕竟在实际应用中,继承与多态往往是相互结合来综合考量的问题。


在进行面向对象程序开发时,通常包含三个步骤。其一为OOA,即面向对象的分析;其二是OOD,指面向对象设计;其三为OOP,意为面向对象的编程。


image.png

正常来讲,应当先对所有相关内容进行分析,接着开展设计工作,而后再进行程序开发。不过,当下我们可先通过编程去了解面向对象能实现哪些功能,以及面向对象的核心语法结构是怎样的,之后再由程序回溯至分析环节,按照这样的形式推进。


当然,最终还是要逐步深入理解面向对象分析,实际上,面向对象分析很难做到量化。总而言之,有一条最为简单的设计原则,那就是生活中合理的场景,在程序中一般也说得通。需明确,不要认为程序代码是抽象之物,实际上它与我们生活中的操作及思考流程是一致的。


就好比日常生活中要吃饭,人们并非只关注吃饭这一行为本身,实际上还涵盖移动至餐桌、拿餐具进食、用餐完毕后收拾擦拭等一系列环节。所以要记住,以生活中的方式去进行程序分析,是最为快捷的学习途径。

相关文章
|
10月前
|
编解码 Cloud Native 算法
通义万相:视觉生成大模型再进化
通义万相是阿里云推出的视觉生成大模型,涵盖图像和视频生成。其2.0版本在文生图和文生视频方面进行了重大升级,采用Diffusion Transformer架构,提升了模型的灵活性和可控性。通过高质量美学标准和多语言支持,大幅增强了画面表现力。此外,视频生成方面引入高压缩比VAE、1080P长视频生成及多样化艺术风格支持,实现了更丰富的创意表达。未来,通义万相将继续探索视觉领域的规模化和泛化,打造更加通用的视觉生成大模型。
|
9月前
|
存储 自然语言处理 自动驾驶
基于LLM打造沉浸式3D世界
阿里云数据可视化产品DataV团队一直在三维交互领域进行前沿探索,为了解决LLMs与3D结合的问题,近期在虚幻引擎内结合通义千问大模型家族打造了一套基于LLM的实时可交互3D世界方案,通过自然语言来与引擎内的3D世界进行交互。
913 160
|
10月前
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
针对本地存储和 PVC 这两种容器存储使用方式,我们对 ACK 的容器存储监控功能进行了全新升级。此次更新完善了对集群中不同存储类型的监控能力,不仅对之前已有的监控大盘进行了优化,还针对不同的云存储类型,上线了全新的监控大盘,确保用户能够更好地理解和管理容器业务应用的存储资源。
615 284
|
11月前
|
弹性计算 运维 监控
两招玩转阿里云系统事件监控
两招玩转阿里云系统事件监控,教你如何快速使用云监控监控阿里云重要系统事件。
785 232
|
9月前
|
人工智能 Ubuntu Linux
我的工具库-2025
从2008年编写第一行代码起,我经历了多阶段的知识管理探索。初期使用草稿本和待办事项,后转为离线笔记软件、个人博客与印象笔记,最终在2023年选定Obsidian作为核心工具,结合卡片式笔记法和双链笔记,实现高效的知识收集、加工与分享。我的日常工具涵盖开发环境(如JetBrains系列)、操作系统(Ubuntu)、NAS系统(TrueNAS Scale)及各类辅助应用,形成了一个高度定制化的“外部大脑”。这一套工具不仅支持了我的工作和学习,也让我深刻体会到AI时代的便利与无限可能。
我的工具库-2025
|
8月前
|
Java
课时3:类与对象的定义及使用
在明晰了类与对象的关系之后,下面我们来了解一下在Java中类与对象的语法定义。
113 9
|
8月前
|
Python
Python 高级编程与实战:深入理解面向对象与并发编程
本文深入探讨Python的高级特性,涵盖面向对象编程(继承、多态、特殊方法、类与实例属性)、异常处理(try-except、finally)和并发编程(多线程、多进程、异步编程)。通过实战项目如聊天服务器和异步文件下载器,帮助读者掌握这些技术,编写更复杂高效的Python程序。
|
9月前
|
存储 数据挖掘 数据处理
Pandas高级数据处理:数据安全与隐私保护
在数字化时代,数据安全与隐私保护至关重要。本文介绍使用Pandas进行数据分析时常见的安全问题及解决方案,包括数据泄露风险、权限报错、数据类型转换错误等,并结合代码案例详细讲解如何避免和解决这些问题。同时,探讨高级策略如访问控制、匿名化、差分隐私及加密传输存储,确保数据分析合法合规。
214 7
|
8月前
|
存储 人工智能 安全
课时21:阿里云混合云解决方案
阿里云混合云解决方案通过高速互联,无缝整合企业原有IT资源与云端计算资源,解决传统架构下数据存储、扩容及安全控制等难题。它提供世界级的云计算、大数据和AI技术,助力企业高效、安全、低成本地实现数字化转型。混合云模式支持按需付费、实时应对流量高峰,确保业务永续,提升用户体验,并为企业全球化部署提供低延时、高带宽的通信保障。
257 0