1、谈谈你对面向对象的理解?
对于什么是面向对象,它是一种编程思想。聊到面向对象,还有一种常见的另外一种编程思想是面向过程。
面向过程:是一种以过程为中心的编程思想,面对问题,罗列出解决问题的步骤,然后按步骤一步步去实现。
比如:洗衣服 ---> 放水 ---> 放衣服 ---> 放洗衣液 ---> 揉搓 ---> 拧干 ---> 在放水冲一遍 ---> 完成拧干晾晒
面向对象:是以对象为核心,不需要关心程序内部的实现。解决问题时候,把问题抽象成对象,使用对象的一些方法和属性,让对象自己执行,解决问题。
比如:洗衣服 ---> 放到全自动洗衣机 ---> 选好模式启动 ---> 完成拿出衣服晾晒
面向对象有三大特性:封装、继承、多态
什么是封装?
封装是把过程和数据封装到一起,组成功能模块,将不需要对外提供的内容都隐藏起来,提供公共方法对其访问。
封装的好处是:
- 隐藏实现细节,提供公共的访问方式
- 提高了代码的复用性
- 提高安全性
什么是继承?
通过类继承,主要用途是将子类存在共性的东西,把它抽取出来放到父类里面,比如将共同拥有的属性和方法抽取出来放到父类里面。
继承的好处:
- 想要使用这些属性和方法的时候,可以直接去使用父类的,而不需要自己再重新去定义,更大程度的实现代码复用。
- 我们不需要写很多的冗余的代码,把共性的全部抽到父类,可以直接调用,如果需要个性化自定义子类的方法时,去重写父类的方法即可。
什么是多态?
多态就是同一个行为针对不同的对象产生出来的结果是不一样的,但是js中很少出现多态,
两者的区别:
1.面向过程:
优点:性能较高
缺点:耦合性强,不易维护,扩展和复用
2.面向对象
优点:程序间低耦合,易于维护,扩展和复用,灵活配置
缺点:性能低于对象过程,因为面对对象需要实力化,比较消耗性能
总结:js并不是真正的面向对象语言,它是属于基于对象的语言,所有的类,所有的对象,最终都是基于Object。