2024年最新干货!详解Java面向对象开发方法,看清华大牛带你深入浅出剖析,mysql的事务隔离级别面试题

最后的话

无论是哪家公司,都很重视Spring框架技术,重视基础,所以千万别小看任何知识。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。
同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,好了希望这篇文章对大家有帮助!

部分截图:
在这里插入图片描述

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

面向对象的开发方法把软件系统看成是各种对象的集合,对象就是最小的子系统,一组相关的对象能够组合成更复杂的子系统。面向对象的开发方法具有以下优点:

  • 把软件系统看成是各种对象的集合,这更接近人类认识世界的自然思维方式。

  • 软件需求的变动往往是功能的变动,而功能的执行者一对象一般不会有大的变化。这使得按照对象设计出来的系统结构比较稳定。

  • 对象包括属性 (数据)和行为(方法),对象把数据及方法的具体实现方式一起封装起来,这使得方法和与之相关的数据不再分离,提高了每个子系统的相对独立性,从而提高了软件的可维护性。

  • 支持封装、抽象、继承和多态等各种特征,提高了软件的可重用性、可维护性和可扩展性。这些特征将在后面的章节中详述。

广义地讲,面向对象编程是结构化编程的一种改进实现方式。传统的面向过程的结构化编程的最小子系统是功能模块,而面向对象编程的最小子系统是对象。

对象模型

在面向对象的分析和设计阶段,致力于建立模拟问题领域的对象模型。建立对象模型既包括自底向上的抽象过程,也包括自顶向下的分解过程。

(1)自底向上的抽象。

建立对象模型的第一步是从问题领域的陈述入手。分析需求的过程与对象模型的形成过程一致,开发人员与用户的交谈是从用户熟悉的问题领域中的事物(具体实例)开始的,这就使用户与开发人员之间有了共同语言,使得开发人员能彻底搞清用户需求,然后再建立正确的对象模型。开发人员需要进行以下自底向上的抽象思维:

  • 把问题领域中的事物抽象为具有特定属性和行为的对象。比如一个模拟动物园的程序中,存在各种小动物对象,比如各种小猫、小狗等。

  • 把具有相同属性和行为的对象抽象为类。比如尽管各种小猫、小狗等对象各自不同,但是它们具有相同的属性和行为,所以可以将各种小猫对象抽象为小猫类,而各种小狗对象抽象为小狗类。

  • 当多个类之间存在一些共性(具有相同属性和行为)时,把这些共性抽象到父类中。比如在前面的例子中,小猫类和小狗类又可以进一步归于哺乳动物类。

(2)自顶向下的分解。

在建立对象模型的过程中,也包括自顶向下的分解。例如对于计算机系统,首先识别出主机对象、显示器对象、键盘对象和打印机对象等。接着对这些对象再进一步分解,例如主机对象由处理器对象、内存对象、硬盘对象和主板对象等组成。系统的进一步分解因有具体的对象为依据,所以分解过程比较明确,而且也相对容易。所以面向对象建模也具有自顶向下开发方法的优点,既能有效地控制系统的复杂性,又同时避免了结构化开发方法中功能分解的困难和不确定性。

UML:可视化建模语言

面向对象的分析与设计方法,在20世纪80年代末至90年代中发展到一个高潮。但是,诸多流派在思想和术语上有很多不同的提法,对术语和概念的运用也各不相同,统一是继续发展的必然趋势。需要用一种统一的符号来描述在软件分析和设计阶段勾画出来的对象模型,统一.建模语言(Unified Modeling Language, UML)应运而生。

UML是一种定义良好、易于表达、功能强大且普遍适用的可视化建模语言。它吸取了诸多流派的优点,而且有进一步的发展,最终成为大众所共同接受的标准建模语言。

面向对象开发中的核心思想和概念

===============

在面向对象的软件开发过程中,开发者的主要任务就是先建立模拟问题领域的对象模型,然后通过程序代码来实现对象模型。到底如何建立对象模型,如何用程序代码实现对象模型,并且能保证软件系统的可重用、可扩展和可维护性呢?

问题领域、对象、属性、状态、行为、方法、实现

问题领域是指软件系统所模拟的真实世界中的系统。随着计算机技术的发展和普及,软件系统渗透到社会的各个方面,几乎可用来模拟任意一种问题领域,如学校、医院、商场、银行、电影摄制组和太阳系等。

对象是对问题领域中事物的抽象。对象具有以下特性:

(1)万物皆为对象。问题领域中的实体和概念都可以抽象为对象。例如在学校领域,对象包括学生、成绩单、教师、课程和教室等:在银行领域,对象包括银行账户、出纳员、支票、汇率、现金和验钞机等;在商场领域,对象包括客户、商品、订单、发票、仓库和营业员等:在电影摄制组领域,对象包括演员、导演、电影、道具和化妆师等;在太阳系领域,对象包括太阳、月亮、地球、火星和木星等;在用Java语言创建的图形用户界面中,窗口、滚动面板、按钮、列表、菜单和文本框等也都是对象。

(2)每个对象都是唯一-的。对象的唯一性来自于真实世界中事物的唯一性。世界上不存在两片一模一样的叶子,因此在软件系统中用来模拟每片叶子的对象也具有唯一性。例如学校领域的学生小张、学生小王、小张的成绩单和小王的成绩单,这些都是唯一的对象。在Java虚拟机提供的运行时环境中,保证每个对象的唯一性的手段是为它在内存中分配唯一的地址。

(3)对象具有属性和行为。例如小张,性别女,年龄15,身高1.6米,体重40kg, 能够学习、唱歌和打羽毛球。小张的属性包括:姓名、性别、年龄、身高和体重。小张的行为包括:学习、唱歌和打羽毛球。例如一部手机:品牌名称是诺基亚,价格是2000元,银白色,能够拍照、打电话和收发短信等。这只手机的属性包括:品牌类型type、 价格price 和颜色color,行为包括拍照takePhoto()、 打电话call)、 收短信sendMessage(和发短信receiveMessage()。

同一个类的所有实例具有相同属性,表明它们的属性的含义相同,但是它们的状态不一定相同,也就是属性取值不一定相同。例如演员小红、小白和小黄,都有姓名、性别、年龄、身高和体重这些属性,但是他们的属性取值不同。

同一个类的所有实例包括类本身的所有实例,以及其子类的所有实例。类的所有实例具有相同行为,意味着它们具有一些相同的功能。类本身的所有实例按同样的方式实现相同的功能,而子类与父类之间,以及子类之间的实例则可能采用不同的方式来实现相同的功能。

类、类型

====

类是一组具有相同属性和行为的对象的抽象。类及类的关系构成了对象模型的主要内容。如下图所示,对象模型用来模拟问题领域,Java 程序实现对象模型,Java程序运行在Java虚拟机提供的运行时环境中,Java虚拟机运行在计算机机器上。

计算机受其存储单元的限制,只能表示和操作一些基本的数据类型,比如整数、字符和浮点数。对象模型中的类可以看作是开发人员自定义的数据类型,Java 虛拟机的运行时环境封装了把自定义的数据类型映射到计算机的内置数据类型的过程,使得开发人员不必受到计算机的内置数据类型的限制,对任意一种问题领域,都可以方便地根据识别对象、再进行分类(创建任意的数据类型)的思路来建立对象模型。

干货!详解Java面向对象开发方法,看清华大牛带你深入浅出剖析

消息、服务

软件系统的复杂功能是由各种对象向电视机对象发送一个“开机”消息。电视机对象接受到这个“开机”消息,执行相应的开机操作。此外,遥控器还能向电视机发送其他消息,例如选择频道、调节音量、播放VCD和关机等。

干货!详解Java面向对象开发方法,看清华大牛带你深入浅出剖析

每个对象都具有特定的功能,相对于其他对象而言,它的功能就是为其他对象提供的服务。例如电视机具有的功能包括:开机、关机、选择频道、调节音量和播放VCD等。遥控器为了获得电视机的服务,需要向电视机提出获得特定服务的请求,提出请求的过程称为发送消息。对象提供的服务是由对象的方法来实现的,因此发送消息实际上也就是调用一个对象的方法。

接口

既然每个对象是服务提供者,那么如何对外提供服务呢?对象通过接口对外提供服务。例如电视机的红外线接收器就是为遥控器提供的接口。再比如在日常生活中经常接触的电源插口,如果把整个供电系统看作-一个对象,那么它提供的主要服务就是供电。如何提供这一服务呢? 很简单,只要在住宅里布置好线路,提供一些电源插口,各种电器就能从电源插口中获得电源了。电源插口就是供电系统为各种电器提供的接口。此外,鼠标上的按钮、键盘上的按钮、洗衣机上的按钮、电灯的开关都是为用户提供的接口。

在现实世界中,接口也是实体,比如电源插口、洗衣机上的按钮和电灯的开关。而在面向对象的范畴中,接口是一个抽象的概念,是指系统对外提供的所有服务。系统的接口描述系统能够提供哪些服务,但是不包含服务的实现细节。这里的系统既可以指整个软件系统,也可以指一个子系统。对象是最小的子系统,每个对象都是服务提供者,因此每个对象都有接口。

在Java语言中,接口有两种意思:

  • 一是指以上介绍的概念性的接口,即指系统对外提供的所有服务,在对象中表现为public类型的方法的声明。

  • ​二是指用interface 关键字定义的实实在在的接口,也称为接口类型,它用于明确地描述系统对外提供的所有服务,它能够更加清晰地把系统的实现细节与接口分离。

封装

封装是指隐藏对象的属性和实现细节,仅仅对外公开接口。封装能为软件系统带来以下优点:

(1)便于使用者正确、方便地理解和使用系统,防止使用者错误修改系统的属性。还是以供电系统为例,过去房屋墙壁的.上方都是电线,现在的房屋里电线都“不见”了,在墙壁上只露出了一些电源插口。为什么要把电线藏起来呢?理由很简单,暴露在外面的电线不安全、也不美观。

再比如电视机系统,尽管它本身的实现很复杂,但用户使用起来却非常简单,只要通过遥控器上的几个按钮就能享受电视机提供的服务。电视机的实现细节被藏在它的大壳子里,没有必要向用户公开。

(2)有助于建立各个系统之间的松耦合关系,提高系统的独立性。当某一个系统的实现发生变化,只要它的接口不变,就不会影响到其他的系统。

(3)提高软件的可重用性,每个系统都是-一个相对独立的整体,可以在多种环境中得到重用。例如干电池就是- -个可重用的独立系统,在相机、手电筒、电动剃须刀和玩具赛车中都能发挥作用。

(4)降低了构建大型系统的风险,即使整个系统不成功,个别的独立子系统有可能依然是有价值的。例如相机损坏了,它的干电池依然有用,可以安装到手电筒中。

一个设计良好的系统会封装所有的实现细节,把它的接口与实现清晰地隔离开来,系统之间只通过接口进行通信。面向对象的编程语言主要是通过访问控制机制来进行封装的,这种机制能控制对象的属性和方法的可访问性。在Java语言中提供了4种访问控制级别:

  • public:对外公开,访问级别最高。

  • protected:只对同一个包中的类或者子类公开。

  • 默认:只对同一个包中的类公开。

  • private:不对外公开,只能在对象内部访问,访问级别最低。

继承

在父类和子类之间同时存在着继承和扩展关系。子类继承了父类的属性和方法,同时,子类中还可以扩展出新的属性和方法,并且还可以覆盖父类中方法的实现方式。覆盖也是专用术语,是指在子类中重新实现父类中的方法。

从每个对象都是服务提供者的角度来理解,子类会提供和父类相同的服务,此外子类还可以提供父类所没有的服务,或者覆盖父类中服务的实现方式。例如手机,早期生产的手机具有打电话的功能,但不具有拍照功能,现在的一些新款手机继承了打电话的功能,而且增加了拍照功能。

继承与扩展同时提高了系统的可重用性和可扩展性。例如,手机和计算机之所以能迅猛地更新换代,具备越来越多的功能,就是因为当厂商在生产新型号的手机和计算机时,他们不必从头生产,而是在原有手机和计算机的基础上进行升级。

最后

由于文案过于长,在此就不一一介绍了,这份Java后端架构进阶笔记内容包括:Java集合,JVM、Java并发、微服务、SpringNetty与 RPC 、网络、日志 、Zookeeper 、Kafka 、RabbitMQ 、Hbase 、MongoDB、Cassandra 、Java基础、负载均衡、数据库、一致性算法、Java算法、数据结构、分布式缓存等等知识详解。

image

本知识体系适合于所有Java程序员学习,关于以上目录中的知识点都有详细的讲解及介绍,掌握该知识点的所有内容对你会有一个质的提升,其中也总结了很多面试过程中遇到的题目以及有对应的视频解析总结。

image

image

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

8AaPsc-1715246254834)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值