在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);
//可以是更多其他用户类型
?>
推荐阅读
- 热闹中的孤独
- 你到家了吗
- Shell-Bash变量与运算符
- JS中的各种宽高度定义及其应用
- 闲杂“细雨”
- 杜月笙的口才
- 2021-02-17|2021-02-17 小儿按摩膻中穴-舒缓咳嗽
- 深入理解Go之generate
- 赢在人生六项精进二阶Day3复盘
- 祖母走了