什么是面向对象
Posted jingxuan-li
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是面向对象相关的知识,希望对你有一定的参考价值。
四大特征:
1、封装:
对于一般人来说,银行的印象就只有一排对外办公的窗口,然后有存款和取款2种基本业务。
银行是一个结构非常复杂,功能非常众多的机构。但实际上,我们并不会很关心它的内部是怎样运作的,比如银行的员工是怎样数钱的,怎样记录存款,怎样开保险柜,等等。这些对于外部的人员来说,知道了可能会引起更多不必要的麻烦。所以银行只需要告诉你,你可以在这个窗口办理业务,可以存款和取款,就够了。
所谓的封装,就是指把内部的实现隐藏起来,然后只暴露必要的方法让外部调用。
2、继承:
刚才提到了银行有2种最基本的业务,存款和取款。但现实中,大部分的银行都不止这两种业务,还有很多其他的业务,比如投资窗口、办理对公业务的窗口等等。这些业务,是在最基本的银行存取款业务的基础上再添加的,所以我们可以理解成,基本的银行是只有2种业务的,然后后来的银行在保留了原有银行的业务基础上,再扩展了其他的业务。
如果把基本的银行看做父类(基类),包含存款和取款2个公共方法,那么后来的银行可以看做是子类,它在继承了基本银行存取款的公共方法只后,还自己新增了投资和对公业务两个公共方法。有些银行甚至会重写基本的存取款功能,让自己和基本银行的业务有一定的区别。这个过程,就是继承。
3、多态:
同样是存款的业务,如果我拿着人民币和拿着美元去银行办理,实际上银行处理的方式是不一样的。这种办理同一种业务(公共方法),由于给予的内容(传入的参数类型或者数量)不一样,而导致操作(最终实现的方法)不一样,叫做编译多态,也叫做函数的重载。
接下来,我去了一家银行存款,我不知道这家银行的存款业务有没有和基本银行不一样,反正我就是把钱存进去了,然后具体业务的实现究竟是调用了基本银行存款功能,还是这家银行本身有新的存款功能实现,我是不关心的。这种外部直接调用一个方法接口,然后具体实现的内容由实际处理的类来决定使用基类或者子类的方法,就叫做运行时多态。
4、抽象:
有些观点并没有把抽象列为面向对象的特征。但实际上这是面向对象的一个本质的东西。
虽然银行五花八门,但我们可以找到他们的共性,比如上面说的,基本的银行有存取款业务,投资银行有投资业务,之类,其实就是对银行作出了一个抽象的看法。
在操作的时候,这些业务其实就是一个个的接口,我不管面对的是什么具体的银行,只要是同一个类型的银行,我都可以进行相同的业务办理。
五大基本原则
单一职责原则:类的功能要单一,不能包罗万象,跟杂货铺似的。
开放封闭原则:一个模块对于拓展是开放的,对于修改是封闭的。
里式替换原则:子类可以替换父类出现在父类能够出现的任何地方。
依赖倒置原则:高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。
接口分离原则:设计时采用多个与特定客户类有关的接口比采用一个通用的接口要好。
面向对象与面向过程
面向过程:
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护
缺点:性能比面向过程第
面向过程:
优点:性能上它是优于面向对象的,因为类在调用的时候需要实例化,开销过大。
缺点:不易维护、复用、扩展
人生有两出悲剧。一是万念俱灰;另一是踌躇满志。—— 萧伯纳
以上是关于什么是面向对象的主要内容,如果未能解决你的问题,请参考以下文章