Scala之特質構造順序(六)

2021-10-23 23:05:52 字數 1023 閱讀 8045

簡介

和類一樣,特質也可以有構造器,由字段的初始化和其他特質體中的語句構成。

構造順序

宣告類的同時混入特質

**案例

object mixinseq 

}trait aa

trait bb extends aa

trait cc extends bb

trait dd extends bb

class ee

class ff extends ee with cc with dd

輸出結果:e..

.a...

b....

c....

d....

f....

執行順序以及細節

首先呼叫當前類的超類構造器

第乙個特質的父特質構造器

第乙個特質構造器

第二個特質的父特質構造器(如果是已經執行過的就不需要再次的執行)

第二個特質構造器

…當前類的構造器

在構建物件時,動態混入特質

**案例

object mixinseq 

}trait aa

trait bb extends aa

trait cc extends bb

trait dd extends bb

class ee

class kk extends ee

輸出結果:e..

.k...

.a...

b....

c....

d....

執行順序以及細節:

呼叫當前類的超類構造器

當前類的構造器

第乙個特質的父特質構造器

第乙個特質構造器

第二個特質的父特質構造器(如果已執行就不需要再次執行)

第二個特質構造器

Scala 之構造器(六)

package objectdemo 主構造器demo類 主構造器的宣告放在類名後面 主構造器中val修飾的在伴生物件中不可修改,var修飾的可修改,沒加修飾符的如下的age引數只能在本類中呼叫,預設為val修飾,如需在伴生物件中呼叫可通過在本類中定義對應的方法返回該屬性值 class struct...

Scala高階之App特質

delayedinit特質裡定義了延遲初始化方法 def delayedinit x unit unit 然後編譯器會把這段初始化 塊裡的邏輯封裝成乙個函式物件 是 unit 型別 override def delayedinit body unit 快取起來 並沒有執行 然後放到乙個集合 list...

scala學習之特質 trait

特質,很像j a中的介面,但是又有些不同,比如實現方法,當然j a8也可以在介面中實現乙個方法了,但是只能定義乙個default方法。當做介面使用 特質 trait logger trait consolelogger extends logger 不需要寫 overrride 在重寫 特質的抽象方...