博客列表 >507 抽象类接口与trait的运用

507 抽象类接口与trait的运用

吃不起土的少年的博客
吃不起土的少年的博客原创
2018年05月08日 11:36:07867浏览

实例

<?php
/**
 * Created by PhpStorm.
 * User: 金超
 * Date: 2018/5/8
 * Time: 9:52
 */
//先创建一个父类
if(!class_exists('engineer')) {
    class engineer
    {
        protected $name;
        public function __construct($name='kim')
        {
            $this->name=$name;
        }
        public function duty($lang='php')
        {
            return $this->name.'的职责是写'.$lang;
        }

    }
}
//第一个trait
if(!trait_exists('Mission')){
    trait Mission
    {
        public $boss='Jack';
        public function task($job='写网页')
        {
            return $this->boss.'给'.$this->name.'下达了'.$job.'的任务';
        }
    }

}
//再写一个trait
if(!trait_exists('Recess'))
{
    trait Recess
    {
        public $leader='Rose';
        public function task($day='三'){
            return $this->leader.'觉得'.$this->name.'工作太辛苦了,于是给'.$this->name.'放了'.$day.'天假';
        }

    }
}
//子类
if(!class_exists('programmer'))
{
    class programmer extends engineer
    {     //子类支持导入多个trait类,方法重名的话用下列方法解决


        use Mission,Recess{
            //重名的task 用Mission::task代替掉Recess::task
            Mission::task insteadof Recess;
            //在用holiday代替Recess::task
            Recess::task as holiday;


        }
    }
}
//实例化子类
$programmer=new programmer();
//调用父类中的方法
echo $programmer->duty();
echo'<hr style="color:aquamarine">';
//访问trait类中的方法
echo $programmer->task();
echo'<hr style="color:blueviolet">';
//调用trait中重名的方法
echo $programmer->holiday();
echo'<hr style="color:cornflowerblue">';

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

QQ截图20180508113534.png

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