extends就是常見類繼承;
implements是實現,一般來說后面是協議/代理性質的類,需要在代碼中實現對應的方法;
with是插入(mixin)的使用,后面的類不能有構建函數,主要是功能的實現,有點類似于多繼承的概念;一般用來實現公用的具體功能,實現后多個類都可以使用
需要注意的是,implements都是在當前類中實現函數,extends可以使用當前類或父類的函數,而with一般是使用插入類的函數,當他們同時實現了同名函數時,實際調用優先級為:
當前類實現 > 插入類實現 > 父類實現
其中多個插入類時,順序從后往前,即最后with的插入類實現最優先。