通俗地解釋scala中疊加特質的構建順序和執行順序

2022-07-21 07:42:10 字數 1127 閱讀 3399

1

object mixindemo02 15}

1617

trait operate4

2122 trait data4 extends

operate4 27}

2829 trait db4 extends

data4 35}

3637 trait file4 extends

data4 }

43class mysql4 {}

多特質疊加的時候,構造物件是從左往右開始。

首先執行file4的構造器,一看繼承了data4,所以去找data4的構造器,再看到data4又繼承了operate4,所以又去找operate4的構造器。由於operate4上面沒有超類了,所以就開始執行構造器的**,println("operate4...")。然後執行data4的構造器**,println("data4")。最後才執行file4的構造器**, println("file4")。

然後執行db4的構造器,db4也繼承了data4,但是上一步data4的構造器**已經被執行過一遍了,所以這時就不會再執行了。直接執行db4的構造器**, println("db4")。

通過以上兩步,mysql4物件就構造完畢,輸出語句的順序為:operate4... -> data4 -> file4 -> db4。

多特質疊加的時候,執行疊加物件裡的的方法是從右往左開始。

首先執行db4中的insert方法,即執行**println("向資料庫"),然後執行**super.insert(id)。

這個時候需要注意的是,這裡的super不再指的是data4了,而是第3行**(new mysql4 with file4 with db4)中的file4物件,因此開始執行file4中的insert方法,即println("向檔案"),然後執行super.insert(id)。

由於file4左邊已經沒有其他特質了,所以這裡的super就指的是data4,即執行data4中的insert方法,println("插入資料 = " + id)。

通過以上三步,insert方法就執行完畢,輸出語句的順序為:向資料庫 -> 向檔案 -> 插入資料 = 100。

Scala中的繼承,抽象,特質

1.繼承 父類 class person val name string,val age int 子類 如果希望使用子類中的值,去覆蓋父類中的值,需要加override關鍵字 class employee override val name string,override val age int,v...

如何通俗易懂地解釋卷積?

卷積這個概念,很早以前就學過,但是一直沒有搞懂。教科書上通常會給出定義,給出很多性質,也會用例項和圖形進行解釋,但究竟為什麼要這麼設計,這麼計算,背後的意義是什麼,往往語焉不詳。乙個公式倘若倘若給不出結合實際的直觀的通俗的解釋 也就是背後的 物理 意義 就覺得少了點什麼,覺得不是真的懂了。教科書上一...

如何簡單通俗地解釋什麼是雲計算?

小宅這邊解釋一下 首先要說,雲是什麼?大量的水滴漂浮在空中,聚合成雲。和我們所說的雲也很相似,只是這裡的雲是由大量的資料儲存 計算資源和應用程式組成,這便是雲計算服務。其次,為什麼會出現雲計算?打個比方吧,以前人們為了滿足生活用水需要打一口井,而現在有了自來水就方便得多,開啟水龍頭就能隨時使用 當然...