php使用 Trait 实现多继承
- 通过在类中使用use 关键字,声明要组合的Trait名称,具体的Trait的声明使用Trait关键词,Trait不能实例化
- Trait中的方法会覆盖 父类中的同名方法,而本类会覆盖Trait中同名方法(优先级当前类>trait父类)
- Trait中的属性跟当前类不能相同有的属性名,(属性名跟属性值一样除外,父类private属性除外)
- 当不同的trait中,却有着同名的方法或属性,会产生冲突,可以使用insteadof或 as进行解决, insteadof 是进行替代,而as是给它取别名 例如: 用Trait1中的eat方法替代Trait2中的eat方法
class cat{
use trait1,trait2{
trait1::eat insteadof trait2;
} }
- Trait也可以互相组合,还可以使用抽象方法,静态属性,静态方法等(抽象方法必须被实现)