前言
由于在面试中会经常问到面向对象的问题,所以今天在这里做一个总结(以下的面向对象内容都是在JAVA当中的),文章中又出现错误的地方还请各位指出。
一.对面向对象的理解
1.书本中对面向对象的解释:——将数据及对数据的操作方法放到一起,作为一个相互依存的整体—对象。将同类的对象抽象出其共性,形成类,每个类中的大部分数据只能由本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,方法与方法之间通过消息进行通信。程序的具体流程由用户在使用中决定。
2.我对面向对象的理解(普通人能看得懂的解释):——面向对象是程序对现实世界模型的延伸,是一种“是一种万物皆可对象”的编程思想。现实世界中具有相同属性的物体可以归为一类事物-类,而这一类事物中的每一个个体都是这类事物的实例-对象。面向对象编程是以对象为中心,以消息为驱动,所以可以说面向对象的程序=对象+消息。
二.面向对象的三大特性(封装、继承、多态)
1.封装*
概念:隐藏对象的属性和实现细节,仅对外暴露公共访问接口。
个人理解:封装就是将一类事物的属性和行为抽象成一个类,并将其属性私有化,行为公开化,这样做既可以隐藏对象的实现细节,也可以使代码模块化,提高了代码的复用性。
好处:
①代码模块化
②私有化,提高安全性
③提高代码复用性
坏处:
降低执行效率
2.继承*
概念:使用已存在的类的定义作为基础来建立新类的技术。新类的定义可以增加新的数据和新的功能,也可以用父类的功能,但是不能选择性的继承父类。
个人理解:继承就是基于已有的类派生出新类,已有的类叫做父类,新类称为子类,子类可以调用父类非private修饰的属性和行为,也可以扩展自己的功能。
好处:
①提高了代码的复用性
②提高了代码的维护性
③使类与类之间产生关系,这是多态的前提
坏处:
增加了类与类之间的耦合性
3.多态*
概念:父类引用指向子类对象(也可以说通过指向父类的指针,来调用在不同子类中实现的方法)
个人理解:多态就是定义一个父类接口,不同的子类方法继承这个父类接口,在调用父类接口的时候就可以调用不同子类的方法了。
好处:
①解除父子类继承的耦合度
②实现了接口的重用
坏处:
不能使用子类中的特有方法
多态有两个而实现方式:覆盖和重载