ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### 1、实现接口VS继承类 PHP的继承是单继承,也就是说一个类只能继承一个类 ,这种单继承模式保证了类的纯洁性,比C++中的多继承类机制简洁。但是不可否认,对于类的扩展有一定的影响,所以我们认为: 1) 实现接口可以看作是对继承的一种补充,还有一点,继承 是层级式的,不太灵活,及一个类可以层级式的继承。实现阶梯状,但是主要父类有错误会被一个一个的继承下来,这样对于代码的高内聚低耦合来说不是最优的 2)实现接口可以在不打破关系的前提下,对某个功能扩展,非常灵活 ### 看下面的代码: ~~~ <?php class Monkey{ public $age; public $name; public function climbing(){ echo "猴子会爬树。。"; } } interface Bridable{ public function fly(); } interface iFishable{ public function swimming(); } //一个类最多能继承一个父类,可以有多个接口,对子类进行扩展 class littleMonkey extends Monkey implements Bridable , iFishable{ public function fly(){ echo "猴子会飞。。。"; } public function swimming(){ echo "猴子会游泳。。。"; } } $littleMonkey1=new littleMonkey(); $littleMonkey1->fly(); $littleMonkey1->swimming(); $littleMonkey1->climbing(); ?> ~~~ ### 2、final关键字, final什么时候用 1) 因为安全的考虑,类的某个方法不允许被修改。可以用final修饰。 2)不希望某个类被其他的类继承 特别说明:final 不能修改成员属性(变量)。 3、const 概念  1) 当一个成员的变量不允许被修改的时,可以用const 去修饰这个成员变量 基本用法:const 常量名=值; 访问: 类名::常量名  或者 接口名::常量名 注意:常量名应该大写,并且前面不要有$符号,并且定义时必须赋初始值。 ~~~ <?php class A{ const TAX_RATE=0.08; public function payTax($val){ return $val*A::TAX_RATE; // 另外也可以 slef::TAX_RATE 『OK』 } } $a=new A(); echo $a->payTax(100); ?> ~~~ ![](https://box.kancloud.cn/2016-06-03_5750fd8e51471.jpg)