學(xué)習(xí)看見這個(gè)內(nèi)置常量_TRAIT_ ,菜鳥教程給的解析是"從基類繼承的成員被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆蓋怖现。其行為 MyHelloWorld 類中定義的方法一致测砂。優(yōu)先順序是當(dāng)前類中的方法會覆蓋 trait 方法尿褪,而 trait 方法又覆蓋了基類中的方法光绕。"
那么拿菜鳥教程現(xiàn)成的圖來看一下:?
? ??????????????????
首先,MyHelloWorld (子類)繼承Base類的方法及屬性,那么Base就是所指的基類(父類),因?yàn)閠rait與use配合使用,也就是說相對于MyHeolloWorld而言SayWord是子類,而此時(shí)因?yàn)镸yHelloWolrd繼承了其父類Base的方法與其子類sayWorld的中的方法相同,所以MyHelloWorld中的方法其實(shí)就變成了SayWorld中的函數(shù),但是SayWord中又寫了 "parent::sayHello()",所以相當(dāng)于MyHelloWorld又繼承了Base中的方法("這里用的parent的原因是可以解決子類與父類方法重名,導(dǎo)致繼承于父類的這個(gè)方法被覆蓋"),那么最后的結(jié)果輸出就是 Hello World!。
? ??