PHP面试一战到底
上QQ阅读APP看书,第一时间看更新

5.6 练习

1.this、self、parent这3个关键字代表什么,应用场景如何?

答:this在对象中使用,代表当前对象的属性和方法;self和parent在类中使用,调用类的属性和方法。self的作用范围为当前类,parent的作用范围为父类。

2.PHP的继承机制是什么?

答:在PHP中,一个类只能继承一个基类,不支持多重继承。

3.请说明public、protected、private、final关键字的区别。

答:这些关键字定义类的访问控制。

● public代表公有,公有的类成员可以在任何地方被访问,没有任何关键字的成员被视为公有。

● protected代表受保护,受保护的类成员则可以被其自身以及其子类和父类访问。

● private代表私有,被定义为私有的类成员则只能被其定义所在的类访问。

● final是PHP 5新增的一个关键字。如果父类中的方法被声明为final,则子类无法覆盖该方法。如果一个类被声明为final,则不能被继承。

4.PHP的对象引用机制是什么?

答:PHP的对象变量是对象的引用,不是整个对象的复制。

5.Trait是什么?

答:PHP的继承机制为单继承,为了减少单继承语言的限制,增加了水平扩展的能力,从PHP 5.4.0起,PHP实现了一种代码复用的方法,称为Trait。

6.接口与抽象类有什么区别?

答:接口(interface)和抽象类(abstract class)在以下几个方面存在区别:

● 接口中定义的所有方法都必须是公有,而抽象类定义的方法可以是protected、public、private。

● 实现接口用implements关键字,扩展抽象类用extends关键字。

● 接口可以多继承,而抽象类只能单继承。

7.面向对象的三大特性是什么?

答:面向对象的三大特性是封装、继承、多态,分别解释如下:

● 封装。将客观事物封装为抽象的类,以尽可能地隐藏内部的细节,对外只保留部分数据和操作调用方无须关心对象内部的细节,但可以通过对象对外提供的接口来访问该对象。

● 继承。子类可以继承父类的属性和方法。

● 多态。一个类实例的相同方法在不同情形有不同表现形式。

8.面向对象的5大基本原则是什么?

答:5大基本原则简写为S.O.L.I.D,如表5-5所示。

表5-5 面向对象的5大基本原则

9.面向对象编程和面向过程编程有什么区别?

答:见表5-6。

表5-6 面向对象编程和面向过程编程的区别

注:面向对象性能低,是相对于实现同样功能的面向过程编程而言,其内存和CPU的使用率较高。但在现在的硬件条件下,面向对象和面向过程编程,性能上并没有明显差异,不会成为系统瓶颈。