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)的方法则使用动态绑定完成。

相关文章
|
7天前
|
存储 安全 Java
Java面向对象最新超详细总结版!
Java面向对象最新超详细总结版!
25 7
Java面向对象最新超详细总结版!
|
11天前
|
监控 Java 物联网
Java串口通信技术探究1:深入理解RXTX库
Java串口通信技术探究1:深入理解RXTX库
25 2
|
4天前
|
Java
java面向对象——包+继承+多态(一)-2
java面向对象——包+继承+多态(一)
16 3
|
4天前
|
SQL Java 编译器
java面向对象——包+继承+多态(一)-1
java面向对象——包+继承+多态(一)
16 2
|
5天前
|
Kubernetes Java 调度
Java容器技术:Docker与Kubernetes
Java容器技术:Docker与Kubernetes
16 0
|
5天前
|
存储 安全 Java
深入理解Java字节码与反编译技术
深入理解Java字节码与反编译技术
13 0
|
5天前
|
监控 Java Maven
揭秘Java Agent技术:解锁Java工具开发的新境界
作为JDK提供的关键机制,Java Agent技术不仅为Java工具的开发者提供了一个强大的框架,还为性能监控、故障诊断和动态代码修改等领域带来了革命性的变革。本文旨在全面解析Java Agent技术的应用场景以及实现方式,特别是静态加载模式和动态加载模式这两种关键模式。
26 0
|
11天前
|
存储 缓存 前端开发
Java串口通信技术探究3:RXTX库线程 优化系统性能的SerialPortEventListener类
Java串口通信技术探究3:RXTX库线程 优化系统性能的SerialPortEventListener类
36 3
|
11天前
|
安全 IDE Java
Java串口通信技术探究2:RXTX库单例测试及应用
Java串口通信技术探究2:RXTX库单例测试及应用
28 4
|
11天前
|
存储 前端开发 安全
13:会话跟踪技术Session的深度应用与实践-Java Web
13:会话跟踪技术Session的深度应用与实践-Java Web
25 3