Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:明白了接口, trait就非常不错了, 多少学生全卡在这了
//定义一个trait
trait tSayName {
public static function sayName() {
return '我的名字叫小明';
}
}
//基类
class a {
public static function sayName() {
return '我的名字叫小红';
}
}
//扩展类
class b extends a {
use tSayName;
}
//客户端代码
echo b::sayName();//trait在扩展类中的优先级大于基类,如果扩展类中也定义了同名的函数,那么当前类中的同名方法的优先级是最大的
//定义第一个trait
trait tA {
public static function sayName() {
return '我的名字叫小明';
}
}
//定义第二个trait
trait tB {
public static function sayFrom() {
return '我来自广东';
}
}
//定义第三个trait
trait tC {
use tA, tB;//把多个类中用到的相同或者类似的方法写到trait里就完事了
}
//工作类
class hello {
use tC; //相当于use tA, tB;
}
//客户端代码
echo hello::sayName(), hello::sayFrom();