博客列表 >Trait特性技术详解

Trait特性技术详解

笑颜常开的博客
笑颜常开的博客原创
2019年04月10日 22:39:001006浏览

<?php
/**
* Created by PhpStorm.
* User: 廖广
* Date: 2019/4/10
* Time: 21:10
*/
//trait代码复用:增强当前类的功能,克服单继承的缺点
//trait 工作在继承的上下文环境中,它是位于父类和子类之间的
//trait 的优先级高于父类,低于子类
//Bus>trait>Auto
trait Fun1{
   public function drive(){
       return '支持无人驾驶';
   }
   public function care(){
       return '保养其实很简单,记得及时充电就可以了';
   }
   //交通事故处理
   public function accident()  //['æksədənt]
   {
       return '汽车会自动报警,你就安静的坐在车里等警察来吧!';
   }
}
trait Fun2{
   public function fuel(){
       return '新能源汽车';
   }
   //交能事故处理
   public function accident()
   {
       return '只要不起火,电池还能继续使用的,放心吧!';
   }
}
class Auto{
   public $brand;
   public $purpose;
//    构造器
   public function __construct($brand,$purpose)
   {
       $this->brand=$brand;
       $this->purpose=$purpose;
   }
   public function care()
   {
       return '请到授权的专业4S店保养';
   }
}
//定义一个子类,工作类:bus
class Bus extends Auto{
//子类Bus除了可以继承Bus中的成员,还可以导入trait类中的方法
//    use Fun1;
//    use Fun2;
// 命名冲突的结局方法无非两种:替换,别名
   use Fun1,Fun2{
       Fun1::accident insteadof Fun2;
       Fun2::accident as Fun2Acc;
   }
   public function care(){
       return '我们是***商,保养请致电当地经销商';
   }
}
//实例化Bus
$bus=new Bus('安凯','客运');
echo $bus->brand,'<br>';
echo $bus->purpose,'<br>';
//访问trait中的方法
echo $bus->drive(),'<br>';
echo $bus->fuel(),'<br>';
//访问care()
echo $bus->care(),'<br>';
//访问Fun1中的accident()
echo $bus->accident(),'<br>';
//访问Fun2中的accident()
echo $bus->Fun2Acc();

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议