您的位置:首页 > 编程语言 > PHP开发

PHP自学之路-----接口VS继承、final、const

2013-05-22 21:08 525 查看

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);

?>





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  接口VS继承 final const