在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() {

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); //可以是更多其他用户类型

?>

你可能感兴趣的:(在php中extends与implements的区别)