面向对象的面试题

157 阅读2分钟

1、对象是什么?

所谓的对象就是一组无序的属性和属性值以键值对的方式形成的集合。

2、实现一个对象有哪些模式?

工厂模式、构造函数模式、原型模式

3、任意选择两种模式,进行对比一下各自的优缺点?

工厂模式:

优点:解决了创建多个对象代码冗余的问题。

缺点:无法标识对象

构造函数模式:

优点:解决了工厂模式存在的无法标识对象的问题

缺点:构造函数中定义的方法都会在每个实例上创建一遍。

原型模式:

优点:在构造函数原型上定义的方法和属性可以被创建的任意实例共享。

缺点:包含引用值的属性问题,在一个实例中改变这个引用值的属性,其他实例引用值属性也跟着变了。

4、原型链是什么?

原型链:

每个构造函数都有一个原型对象,通过指针__proto__指向它的上一个原型对象,同时原型对象也拥有原型,这样一层一层,最终指向null,这种关系被称为原型链。

5、继承是什么?

继承是类与类的关系,使得子类拥有父类的属性和方法。

继承方式包括:接口继承和实现继承

6、实现继承包括哪些方式?

原型链、盗用构造函数、组合继承、寄生式继承、寄生组合继承

7、任意选择两种继承,说一下各自的优缺点?

原型链:

缺点:

(1)原型中包含引用值的问题,和原型模式存在的问题是一样的。

(2)子类在实例化的时候不能给父类传参数。

盗用构造函数:

优点:

(1)解决原型中包含引用值的问题。

(2)可以在子类构造函数中向父类构造函数传参。

缺点:

(1)必须在构造函数内部定义方法

(2)子类不能访问父类的原型方法。

组合继承:

优点:拥有原型链继承和盗用构造函数继承的优点

缺点:调用父类构造函数两次。

原型式继承:

优点:不需要单独创建构造函数

缺点:和原型模式存在的问题是一样的。

寄生式继承:

缺点:给对象添加函数会导致函数难以复用。

寄生式组合继承:

优点:解决了组合继承存在的调用父类构造函数两次的问题。

8、面向对象的应用场景?