Blogger Information
Blog 17
fans 0
comment 0
visits 12139
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
trait类1010
ShunPro的博客
Original
800 people have browsed it

我对trait类的一点儿认识 :

    trait类, 是为了解决php类的单继承问题
    trait类, 是个方法集
    trait类, 是父类与子类之间的一个类, 扩充父类的方法
    trait类, 不能被实例化, 不能被继承extends
    trait类, 重写父类同名的方法后, 在子类中, trait类中的方法将覆盖父类方法


trait类的声明 :

trait类的定义和类相似 , 但以 trait 关键字来声明

trait T_name1
{
    public functiong method1()
    {
        //方法一 ;
    }
    public functiong method2()
    {
        //方法二 ;
    }
    // ....    
}

在子类中使用use关键字引入trait类

class SubClass extends SuperClass
{
    use T_name1;
    use T_name2;
    /...
}


方法的优先级为 : 子类  ---> trait类  ---> 父类

代码示例:

class Animal
{
    public function cry()
    {
        echo 'Say : 吼!!!'.'<br>';
    }
    public function eat()
    {
        echo '吃'.'<br>';
    }
}

// 不直接变动父类, 通过 traits 增加新的方法集, 或修改父类方法
trait Action
{
    public function cry()
    {
        echo 'Say : 啊呜!'.'<br>';
    }
    public function run()
    {
        echo '跑得快!'.'<br>';
    }
    public function sleep()
    {
        echo '睡一觉!'.'<br>';
    }
}

class Dog extends Animal
{
    // 引入trait类
    use Action;
    public function eat()
    {
        echo '狗连***都吃'.'<br>';
    }
    public function sleep()
    {
        echo '狗趴着睡!'.'<br>';
    }
}

$my_dog = new Dog();
$my_dog->cry();
$my_dog->eat();
$my_dog->run();
$my_dog->sleep();

运行结果 : 

        Say : 啊呜!
        狗连***都吃
        跑得快!
        狗趴着睡!

Correction status:qualified

Teacher's comments:上午刚说过, 又把一天的作业分成几个, 下次注意 trait的案例还行
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post