Java核心技术之面向对象

简介: 本讲介绍什么是面向对象,面向对象是java特有的吗?为什么我们在开发代码的时候要面向对象编程

image.png

前言:📫 作者简介:小明java问道之路,专注于研究计算机底层,就职于金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的设计和架构📫

🏆 Java领域优质创作者、阿里云专家博主、华为云享专家🏆

🔥 如果此文还不错的话,还请👍关注点赞收藏三连支持👍一下博主哦

本文导读

本讲介绍什么是面向对象,面向对象是java特有的吗?为什么我们在开发代码的时候要面向对象编程

第一节:什么是面向对象?

面向对象八股文:面向对象是一种程序设计范型,其基本思想是使用对象、类、继承、封装、聚合、关联、多态性等概念进行程序设计;面向对象是一种软件开发中的策略,是一套关于如何看待软件系统和现实生活的关系,研究问题并进行问题求解,以及如何系统构建软件方法。

通过计算机的工作模型(冯诺依曼体系结构)找面向对象编程的启发

中央处理器cpu:用于执行计算机指令以及完成计算任务,包括控制器、运算器、以及寄存器等

内部存储器和主存储器:内存,用于存储计算机指令和数据,由许存储单元组成,每个存储单元都有一个地址(储存器)

外围设备:外设,提供了计算机与外界的接口(输入输出设备、外部存储)

image.pngimage.gif


我们看到冯·诺依曼体系结构中,程序从外存装入内存,cpu从内存逐条解析指令,程序所需要的数据从内存或外存获取,程序执行中间结果保存在内存中,最终结果通过外设输出结果。

可以总结为,计算机由 CPU - 内存 - 外设 组成,同时数据通过 外存 -> 内存 -> 运算  (产生结果) -> 储存 -> 显示,程序的流转 大致为:存储 和 执行

那么,将存储理解为数据结构,执行理解为算法,就是我们常说的面向过程设计。

面向过程是以功能为中心,基于功能分解的程序设计模型,一个过程是程序是由一些子程序构成,子程序描述的一系列操作,每个子程序对应一个子功能,实现了功能抽象。

当我们之关心数据(对象)的流转,比如数据:“我要处理然后显示,别的我不管”,程序:“emmm,好吧” 于是面向对象诞生了,可以看出,面向对象不关心过程是如何的

两者做个对比

面向过程处理数据:运算 -> 储存 -> 显示(关注数据和过程)

面向对象处理数据:存储类(里面可以存储,存储之前可以运算)、显示类、运算类、主流程(分离关注点)

面向对象的程序,通过由单个能够起到子程序作用的单元或对象组合而成,使主流程的责任分散

第二节:为什么要面向对象?

面向对象可以降低复杂度,把一个个流程,抽象成系统中的对象,作为系统中的基本构成单位,充分利用现实思维解决问题,运用抽象、分配、继承、聚合、封装、关联等原则,使开发者有效思考问题,并建立对象关系和交流。

封装(encapsulation):把对象的属性和操作结合成⼀个独立的系统单位,并尽可能隐蔽对象的内部细节,使对象能够集中⽽完整地描述并对应⼀个具体的事物,体现了事物的相对独立性,使对象外部不能随意存取对象的内部数据,避免了外部错误对它的“交叉感染”,对象的内部的修改对外部的影响很小,减少了修改引起的“波动效应”

封装的缺陷:编程繁琐,执行效率降低

抽象(abstract):只关注与当前目标有关的本质特征,从而找出事物的共性,叫做抽象,并且抽象是形成概念的基本手段(忽略事物之间的差别)

分类(classification):把具有共性的事物划分为一类叫做分类(注意事物之间的差别)

继承(inheritance):子类可以拥有其父类的全部属性与操作,称作特殊类对父类的继承,具有自动的拥有、高复用的特点

聚合(aggregation):聚合刻画了现实事物之间的构成关系或拥有关系(通俗来说就是当前类具有其他类的对象)

多态(polymorphism):

重写(override):在子类中对继承来的属性或操作重新定义其实现

重载(Overload):方法重载是让类以统一的方式处理不同类型数据的一种手段。(重载(Overload)的方法是用静态绑定完成,而重写(Override)的方法则使用动态绑定完成。)

泛型(generic):操作参量的类型可以是参数化的

两种绑定方式:静态绑定和动态绑定,重载(Overload)的方法是用静态绑定完成,重写(Override)的方法则使用动态绑定完成。

相关文章
|
19天前
|
JSON 前端开发 JavaScript
java-ajax技术详解!!!
本文介绍了Ajax技术及其工作原理,包括其核心XMLHttpRequest对象的属性和方法。Ajax通过异步通信技术,实现在不重新加载整个页面的情况下更新部分网页内容。文章还详细描述了使用原生JavaScript实现Ajax的基本步骤,以及利用jQuery简化Ajax操作的方法。最后,介绍了JSON作为轻量级数据交换格式在Ajax应用中的使用,包括Java中JSON与对象的相互转换。
33 1
|
26天前
|
SQL 监控 Java
技术前沿:Java连接池技术的最新发展与应用
本文探讨了Java连接池技术的最新发展与应用,包括高性能与低延迟、智能化管理和监控、扩展性与兼容性等方面。同时,结合最佳实践,介绍了如何选择合适的连接池库、合理配置参数、使用监控工具及优化数据库操作,为开发者提供了一份详尽的技术指南。
31 7
|
28天前
|
移动开发 前端开发 Java
过时的Java技术盘点:避免在这些领域浪费时间
【10月更文挑战第14天】 在快速发展的Java生态系统中,新技术层出不穷,而一些旧技术则逐渐被淘汰。对于Java开发者来说,了解哪些技术已经过时是至关重要的,这可以帮助他们避免在这些领域浪费时间,并将精力集中在更有前景的技术上。本文将盘点一些已经或即将被淘汰的Java技术,为开发者提供指导。
59 7
|
24天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
40 3
|
24天前
|
SQL 监控 Java
Java连接池技术的最新发展,包括高性能与低延迟、智能化管理与监控、扩展性与兼容性等方面
本文探讨了Java连接池技术的最新发展,包括高性能与低延迟、智能化管理与监控、扩展性与兼容性等方面。同时,结合最佳实践,介绍了如何选择合适的连接池库、合理配置参数、使用监控工具及优化数据库操作,以实现高效稳定的数据库访问。示例代码展示了如何使用HikariCP连接池。
14 2
|
26天前
|
Java 数据库连接 数据库
优化之路:Java连接池技术助力数据库性能飞跃
在Java应用开发中,数据库操作常成为性能瓶颈。频繁的数据库连接建立和断开增加了系统开销,导致性能下降。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接,显著减少连接开销,提升系统性能。文章详细介绍了连接池的优势、选择标准、使用方法及优化策略,帮助开发者实现数据库性能的飞跃。
27 4
|
24天前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
22 1
|
24天前
|
算法 Java 数据库连接
Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性
本文详细介绍了Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性。连接池通过复用数据库连接,显著提升了应用的性能和稳定性。文章还展示了使用HikariCP连接池的示例代码,帮助读者更好地理解和应用这一技术。
37 1
|
25天前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
15 2
|
26天前
|
SQL Java 数据库连接
打破瓶颈:利用Java连接池技术提升数据库访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,避免了频繁的连接建立和断开,显著提升了数据库访问效率。常见的连接池库包括HikariCP、C3P0和DBCP,它们提供了丰富的配置选项和强大的功能,帮助优化应用性能。
44 2
下一篇
无影云桌面