面试官:谈谈你对面向对象的理解

1,023 阅读3分钟

大家好,我是番茄小十一

前言

想当年刚入门Java的时候,最开始学习且需要理解的就是“面向对象”这个概念,刚开始听到这个词,也是小白一脸懵逼,那么到底什么是面向对象呢?让我们带着疑问往下看↓↓↓

面向过程 vs 面向对象

谈到面向对象,就不得不提面向过程,面向过程与面向对象是两种不同处理问题的角度,面向过程注重事情的每个步骤和顺序,而面向对象注重事情有哪些参与者,以及各自需要做什么。

举例说明:洗衣机洗衣服
对于面向过程来说,洗衣服的步骤依次如下:打开洗衣机->放入衣服->放入洗衣粉->清洗->烘干

1-2022-07-13-21371.png

对于面向对象来说,它有两个关注对象:人和洗衣机,而人可以做:打开洗衣机、放入衣服、放入洗衣粉;洗衣机可以做:清洗和烘干

2-2022-07-13-2137.png 因此从以上可以看出来,面向过程更加的直接和高效,而面向对象更加易于扩展、复用和维护。

什么是面向对象

面向对象是一种设计思想,可以理解为任何事物都是类,而对象指的是具体的事物,面向对象包含四大特性,分别是:封装继承抽象多态

封装

封装是隐藏类的内部的一种实现机制,主要是对数据、属性和部分内部敏感行为进行隐藏,外界对于属性的放问和修改只能通过定义的公共方法来进行。

封装的好处

封装的好处在于提高了代码的复用性,保护了类的内部的敏感数据和方法。

继承

继承就是在已存在的类的基础上建立新类的基础,新类的定义可以使用父类的属性和方法,也可以定义自己的属性和方法,本质上特殊一般的关系,也就是is-a的关系。Java继承通过extends关键字,继承的类称为子类或派生类,被继承的类称为超类、父类或者基类。子类可以继承父类的所有非私有的属性和方法,但是不能选择性的继承父类。

继承的好处

使用继承的好处在于提高了代码的复用性和可扩展性。

抽象

抽象是将一些事物的公共特征总结出来构造成类的过程,它包含数据抽象和行为抽象,数据抽象成为类的属性,行为抽象成为类的方法。抽象只会关注对象有哪些属性或行为,而不会关注这些行为的具体实现细节是什么。

抽象的好处

使用抽象的好处在于提高了代码的复用性和可扩展性

多态

多态是指在程序中定义的引用变量和通过该引用变量所发出的方法调用在编译期间是不确定的,只有在运行期间才能确定该引用变量到底指向哪个类的实例。这样可以不用修改源程序,就可以让引用变量绑定到各种不同的实现类上。

多态的好处

使用多态的好处在于提升了代码的可扩展性和可复用性

总结

以上就是对面向对象的简单理解,其实深入面向对象的每个特性,需要了解的相关知识还有很多,在此就不详细列举了。