说到面向对象这个面试题,无论对于入门程序员还是资深程序员都会时而说起这个东西,都会有不同的思路,不同的见解,回答的深度也各有不同
面向对象就是一种思想,任何事务都可以看作对象,所以才有了”万物皆对象“这一说,面向对象又称OOP(Object Oriented Programming) 分开来看就是:
- Object:对象
- Oriented: 面向的
- Programming:程序设计
面向对象的三大特征
1.封装(encapsulation)
封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式,就是说我们把不想给,以及别人不需要知道的细节 ”锁起来“,只留一个入口,与外界发生联系。
那么问题来了,我们怎么把我们的数据上锁呢?
我们使用下面这些权限修饰符,在类的内部设置了边界,不同程度的“锁”,决定能被谁使用。
作用域 | 当前类 | 同包 | 子类 | 其他 |
private | 支持 | 不支持 | 不支持 | 不支持 |
default | 支持 | 支持 | 不支持 | 不支持 |
protected | 支持 | 支持 | 支持 | 不支持 |
public | 支持 | 支持 | 支持 | 支持 |
封装的优点:
(1)隐藏了实现细节,提供了公共的访问方式;
(2)提高了代码的重用性;
(3)提高了安全性;
隐藏实现细节的理解:
相信现在大家的家里面都有电视,封装就是你不用管这个电视是怎么做的,也不用管他是怎么运行的,我们只需要操控遥控器就可以看电视了
提高代码重用性的理解:
功能被封装成了类,通过基类(父类)和派生类(子类&#