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的使用率较高。但在现在的硬件条件下,面向对象和面向过程编程,性能上并没有明显差异,不会成为系统瓶颈。