trait bị ghi đè nếu phương thức có cùng tên được định nghĩa trong lớp sử dụng trait. Thứ tự ưu tiên là các thành viên từ lớp hiện tại ghi đè các phương thức Trait, đến lượt nó sẽ ghi đè các phương thức kế thừa.
class BaseClass {
function SomeMethod() { /* Do stuff here */ }
}
interface IBase {
function SomeMethod();
}
trait myTrait {
function SomeMethod() { /* Do different stuff here */ }
}
class MyClass extends BaseClass implements IBase {
use myTrait;
function SomeMethod() { /* Do a third thing */ }
}
Khi tạo một instant của MyClass ở trên, những điều sau sẽ xảy ra: