Java基础&集合 面试经典八股总结 [连载ing]

序言

八股,怎么说呢。我之前系统学习的内容,进行梳理。通过问题的方式,表达出得当的内容,这件事本身就很难。面试时心态、状态、掌握知识的情况等。关于八股文,我不想有太多死记硬背的内容,更多的是希望自我输出。问题,都可以答,答的怎么样,是否算满分答案?很难界定。答的内容不宜过长,答的角度不宜偏离自我含糊的点。我在想,八股文的问题,作为正式面试前的预演,也是对旧知识的回顾。贵在积累,重在坚持。

不要急,不要慌,稳扎稳打。

2025/4/24日 暖夜于天软

面向对象与面向过程的区别?

**面向过程:**分析解决问题的步骤,然后用函数将这些步骤一一实现,在使用的时候,一一调用即可。性能较高。单片机、嵌入式开发等一般采用的就是面向过程开发。

**面向对象:**将构成问题的事务分解成若干个对象,而建立对象的目的也不是为了完成一个个步骤,而是为了描述清楚某个事务在解决问题过程中所发生的行为。面向对象有封装、继承、多态的特性,所以易回复、易复用、易拓展。我们可以设计低耦合、高内聚的系统,但性能上来说,比面向过程差。

Java面向对象有哪些特征,如何应用?

  • 面向对象编程是什么,三大特性。

  • 细聊三大特性

面向对象编程是利用类和对象编程的一种思想。

万物可归类,类是对于世界事物的高度抽象 ,不同的事物之间有不同的关系 ,一个类自身与外界的封装关系,一个父类和子类的继承关系, 一个类和多个类的多态关系。

万物皆对象,对象是具体的世界事物,面向对象的三大特征------封装、继承和多态。

封装说明一个类行为和属性与其他类的关系,低耦合,高内聚;继承是父类和子类的关系;多态说的是类与类的关系。

封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。

  • 属性封装:使用者只能通过事先定制好的方法来访问数据,可以方便地加入逻辑控制,限制对属性的 不合理操作

  • 方法封装:使用者按照既定的方式调用方法,不必关心方法的内部实现,便于使用; 便于修改,增强 代码的可维护性;

继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。

在本质上是特殊~一般的关系,即常说的is-a关系。子类继承父类,表明子类是一种特殊的父类,并且具有父类所不具有的一些属性或方法。从多种实现类中抽象出一个基类,使其具备多种实现类的共同特性 ,当实现类用extends关键字继承了基类(父类)后,实现类就具备了这些相同的属性。继承的类叫做子类(派生类或者超类),被继承的类叫做父类(或者基类)。比如从猫类、狗类、虎类中可以抽象出一个动物类,具有和猫、狗、虎类的共同特性(吃、跑、叫等)。

Java通过extends关键字来实现继承,父类中通过private定义的变量和方法不会被继承,不能在子类中直接操作父类通过private定义的变量以及方法。

继承避免了对一般类和特殊类之间共同特征进行的重复描述,通过继承可以清晰地表达每一项共同特征所适应的概念范围,在一般类中定义的属性和操作适应于这个类本身以及它以下的每一层特殊类的全部对象。

运用继承原则使得系统模型比较简练也比较清晰。

相比于封装和继承,Java多态是三大特性中比较难的一个,封装和继承最后归结于多态, 多态指的是类和类的关系,两个类由继承关系,存在有方法的重写,故而可以在调用时有父类引用指向子类对象。

多态必备三个要素:继承,重写,父类引用指向子类对象。

相关推荐
Sylvia-girl2 小时前
IO流~~
java·开发语言
冰暮流星2 小时前
javascript之数组
java·前端·javascript
Re.不晚3 小时前
JAVA进阶之路——无奖问答挑战3
java·开发语言
不倒翁玩偶3 小时前
IDEA导入新的SpringBoot项目没有启动按钮
java·spring boot·intellij-idea
小小小米粒3 小时前
Maven Tools
java
kali-Myon3 小时前
2025春秋杯网络安全联赛冬季赛-day1
java·sql·安全·web安全·ai·php·web
我是咸鱼不闲呀3 小时前
力扣Hot100系列20(Java)——[动态规划]总结(下)( 单词拆分,最大递增子序列,乘积最大子数组 ,分割等和子集,最长有效括号)
java·leetcode·动态规划
清水白石0084 小时前
深入解析 LRU 缓存:从 `@lru_cache` 到手动实现的完整指南
java·python·spring·缓存
符哥20084 小时前
C++ 进阶知识点整理
java·开发语言·jvm
Sayuanni%34 小时前
初阶_多线程1(线程含义与关键属性)
java