![PHP面试一战到底](https://wfqqreader-1252317822.image.myqcloud.com/cover/891/44509891/b_44509891.jpg)
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大基本原则
![](https://epubservercos.yuewen.com/9146EB/23721566801954006/epubprivate/OEBPS/Images/Figure-T90_41076.jpg?sign=1738929091-NpbkfNGW4PMwQTuOk7iEVXreWihaHqjq-0-3ecba98145340e7224f420bfdb2ac9d7)
9.面向对象编程和面向过程编程有什么区别?
答:见表5-6。
表5-6 面向对象编程和面向过程编程的区别
![](https://epubservercos.yuewen.com/9146EB/23721566801954006/epubprivate/OEBPS/Images/Figure-T90_41077.jpg?sign=1738929091-0en29dtksaeKKjjWAv4KDmDjk117xXGP-0-b9fcb44c0d37bf2a27bcb06aa0921d8e)
注:面向对象性能低,是相对于实现同样功能的面向过程编程而言,其内存和CPU的使用率较高。但在现在的硬件条件下,面向对象和面向过程编程,性能上并没有明显差异,不会成为系统瓶颈。