批改状态:合格
老师批语:有一种会, 叫看上去会了, 这是第一步, 离了老师指导 写不出来, 是因为还没有接触到实际项目
//接口中不可以定义属性,可以定义常量interface Aname{// 接口常量const USER_NAME = '中国';}//接口中定义的方法不能有方法体interface Afun{//接口方法public function fun();}//接口可以用extends继承一个或多个接口// 接口实现多继承interface Bname extends Aname, Afun{public function fun1();}//继承接口的类必须实现接口中定义的所有方法,并且类也可以实现多个接口class User implements Bname{//实现Aname接口中的 fun()方法public function fun(){}//实现Bname接口中的 fun1()方法public function fun1(){}}
// 用抽象类来部分实现一个接口interface VipUser{//会员等级public function membership();//折扣public function discount();}// 用抽象类只实现会员等级这个方法abstract class User1 implements VipUser{protected $k='钻石卡';public function membership(){return $this->k;}}// 工作类: 实现折扣方法class User2 extends User1{protected $z='7折';public function discount(){return $this->z;}}$user = new User2();//通过调用抽象类中的membership()方法获得会员级别echo $user->membership();//根据会员级别打折echo $user->discount();
//接口实现多态interface VipUser{//会员等级public function membership();//折扣public function discount();//商场名称public function marketName();}//通过商场名称,对顾客的会员等级进行打折class User1 implements VipUser{protected $name='京东商场';protected $k='钻石卡';protected $z='打7.5折';public function marketName(){return $this->name;}public function membership(){return $this->k;}public function discount(){return $this->z;}}class User2 implements VipUser{protected $name='天猫商场';protected $k='钻石卡';protected $z='打8折';public function marketName(){return $this->name;}public function membership(){return $this->k;}public function discount(){return $this->z;}}//通过方法参数,接受了接口实现类对象class User{public function name( VipUser $obj){return $obj->marketName();}public function vip( VipUser $obj){return $obj->membership();}public function zhekou( VipUser $obj){return $obj->discount();}}$user1 = new User1();$user =new User();echo $user->name($user1);echo $user->vip($user1);echo $user->zhekou($user1);echo '<hr>';$user2 = new User2();echo $user->name($user2);echo $user->vip($user2);echo $user->zhekou($user2);
// triat是一个特殊类,与抽象类,接口一样不能实例化,只能嵌入到宿主类中使用。// 通过在类中使用use关键字,声明要组合的Trait名称,trait里面可以使用:静态成员,抽象成员,普通成员.不能使用常量。// Trait内的属性会和调用它的类内的同名的属性冲突,优先顺序:当前类成员 > trait类成员 > 基类成员// 一个类可以组合多个Trait,通过逗号相隔,trait不能在接口中使用。trait myTrait {public function demo() {echo 'triat是一个特殊类<br>';}}class Dad {use myTrait;public function demo1() {echo '我是一个父类<br>';}}class Body extends Dad {public function demo1() {echo '我是一个子类<br>';}}$body = new Body();$body->demo1();$body->demo1();$body->demo();
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号