Trait组合同名命名冲突解决方法
trait tDemo
{
//继承了tDemo1与tDemo2
use tDemo1, tDemo2 {
// 1. 第一个办法:使用insteadOf将tDemo1里面的方法被tDemo2替代掉
tDemo1::display insteadOf tDemo2;
// 2. 第二个办法:别名 给重名的方法换名字 下面是将tDemo2里面的重名的方法换成td2
tDemo2::display as td2;
}
}
在trait中改变trait成中的访问控制
//修改trait成员的访问控制 protected为修改后属性 td1为修改后名称
//属性修改为受保护 不能再客户端调用,但是可以在类中调用
//以下是将tDemo1里面的方法display属性修啊改为protected 名称修改为td1
use tDemo1 {display as protected td1;}
在trait中实现接口方法优点:
可以更方便的应用在工作类当中
更有层级性
1.接口中写抽象方法,
2.trait中实现接口中的抽象方法,
3.然后使用类进行实现
4.最后客户端调用。