scala簡要: 繼承
來源:程序員人生 發布時間:2015-01-13 08:26:18 閱讀次數:3161次
scala擴大類的方式一樣是使用extends關鍵字,重寫1個非抽象方法必須使用override修飾符,用isInstanceOf方法判斷某個對象是不是屬于某個特定的類,只有主構造器可以調用超類的構造器。
字段重寫時的限制:
-def 只能重寫另外一個def
-val只能重寫另外一個val或不帶參數的def
-var只能重寫另外一個抽象的var
構造順序問題的根本緣由――java允許在超類的構造方法中調用子類的方法。由于在子類中正確的擴大相等性判斷非常困難,所以將equals方法定義成final。除非萬不得已,不要使用wait,notify和synchronized。
和java的接口不同,scala特質可以給出這些特質的缺省實現。讓特質具有具體行動存在1個弊端,當特質改變時,所有混入了該特質的類必須要重新編譯。scala不支持多繼承,可以用with關鍵字來添加額外的特質。當作富接口使用的特質將具體方法和抽象方法結合在了1起,特質中的字段一樣既可以是具體的,又可以是抽象的。
混入特質的對象在構造時的履行順序:
1)首先調用超類的構造器
2)特質構造器在超類構造器以后,類構造器之前履行
3)特質由左到右構造
4)每一個特質中,父特質先被構造,
5)如果多個特質有1個父特質,若已被構造則不會再次構造
6)所有特質構造終了,子類被構造。
缺少構造器參數是特質與類之間唯1的技術差別。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈