面试题整理

61 阅读2分钟

1、谈谈你对面向对象的理解?

对于什么是面向对象,它是一种编程思想。聊到面向对象,还有一种常见的另外一种编程思想是面向过程。

面向过程:是一种以过程为中心的编程思想,面对问题,罗列出解决问题的步骤,然后按步骤一步步去实现。

比如:洗衣服 ---> 放水 ---> 放衣服 ---> 放洗衣液 ---> 揉搓 ---> 拧干 ---> 在放水冲一遍 ---> 完成拧干晾晒

面向对象:是以对象为核心,不需要关心程序内部的实现。解决问题时候,把问题抽象成对象,使用对象的一些方法和属性,让对象自己执行,解决问题。

比如:洗衣服 ---> 放到全自动洗衣机 ---> 选好模式启动 ---> 完成拿出衣服晾晒

面向对象有三大特性:封装、继承、多态

什么是封装?

封装是把过程和数据封装到一起,组成功能模块,将不需要对外提供的内容都隐藏起来,提供公共方法对其访问。

封装的好处是:

  1. 隐藏实现细节,提供公共的访问方式
  2. 提高了代码的复用性
  3. 提高安全性

什么是继承?

通过类继承,主要用途是将子类存在共性的东西,把它抽取出来放到父类里面,比如将共同拥有的属性和方法抽取出来放到父类里面。

继承的好处:

  1. 想要使用这些属性和方法的时候,可以直接去使用父类的,而不需要自己再重新去定义,更大程度的实现代码复用。
  2. 我们不需要写很多的冗余的代码,把共性的全部抽到父类,可以直接调用,如果需要个性化自定义子类的方法时,去重写父类的方法即可。

什么是多态?

多态就是同一个行为针对不同的对象产生出来的结果是不一样的,但是js中很少出现多态,

两者的区别:

1.面向过程:
优点:性能较高
缺点:耦合性强,不易维护,扩展和复用

2.面向对象
优点:程序间低耦合,易于维护,扩展和复用,灵活配置
缺点:性能低于对象过程,因为面对对象需要实力化,比较消耗性能

总结:js并不是真正的面向对象语言,它是属于基于对象的语言,所有的类,所有的对象,最终都是基于Object。