scala的類、抽象類、接口、對象
- class :類, 通過new關鍵字來實例化,每次實例化都會創建一個新的對象;用來定義普通的類。
- object:對象,用來定義一個單例對象的,它只有一個實例,且在程序運行期間只會被創建一次。object中定義的方法和變量都是靜態的,可以通過對象名直接調用;在實際編程中,object通常用來定義工具類、單例模式等場景
- trait : 特質(Trait),是一種類似于Java中接口的概念,用來定義一組可復用的方法和字段。可以包含實現代碼,特質可以被類和對象混入,從而實現代碼的復用和組合。
- extends : 用于類的繼承,它可以讓一個類繼承另一個類的所有成員,包括成員變量、成員方法和構造函數
- with : 特質trait混入使用with關鍵字,一個類或對象可以混入多個特質,混入的特質可以覆蓋類或對象中的同名方法和字段,這樣就可以實現代碼的復用和組合
例如,下面的代碼定義了一個Logger特質,它有一個log方法,然后定義了一個Person類,它混入了Logger特質:
trait Logger {def log(msg: String): Unit = println(s"[${java.time.Instant.now}] $msg")
}class Person(val name: String) with Logger {def greet(): Unit = {log(s"Greeting from $name")println(s"Hello, my name is $name")}
}
#在上面的代碼中,Person類使用with關鍵字混入了Logger特質,并在greet方法中調用了log方法。這樣,Person類就可以使用Logger特質的成員了。