在php中extends与implements的区别

PHP

类是单继承,也就是不支持多继承,当一个类需要多个类的功能时,继承就无能为力了,为此 PHP 引入了类的接口技术。
接口的使用使用implements关键字,而对抽象类使用的是extends继承关键字。
在接口中只能定义常量和方法,不能实现方法,const定义常量,functionUser(); 不能使用pubilc
$a ="a"与 pubilc static$a
="a";
//抽象类


abstract class Father {
function name() {
echo "name...
";
}
abstract function name2();
public $n="n1";
public static $n2="n2";
const n3="n3";
}
class Data extends Father {
function name2() {
【在php中extends与implements的区别】echo "name2 of Data...
";
}
}
$v=new Data();
echo $v->var1."
";
echo Father::$n2."
";
echo Father::n3."
";
//实现接口
interface User{
function getDiscount();
function getUserType();
}
//VIP用户 接口实现
class VipUser implements User{
private $discount = 0.5;
function getDiscount() {
return $this->discount;
}
function getUserType() {
return "VIP用户";
}
}
class Goods{
//public $price="45"; 此处接口定义中不能包含成员变量
//public static $price="45"; 此处接口定义中不能包含静态变量
//
const price = 45;
public $vc;
//定义 User 接口类型参数,这时并不知道是什么用户
function run(User $vc){
$this->vc = $vc;
$discount = $this->vc->getDiscount();
$usertype = $this->vc->getUserType();
echo $usertype."商品价格:".self::price*$discount;
}
}
$display = new Goods();
$display ->run(new VipUser); //可以是更多其他用户类型
?>

    推荐阅读