Scala特質
特質(trait)
Scala中沒有介面(interface)的概念
特質用於在類之間共享程式介面和欄位,類似Java介面
特質是欄位和方法的集合,可以提供欄位和方法實現
類和單例物件都可以擴充套件特質(extends)
特質不能被例項化,因此沒有構造引數,類似Java介面
特質使用“trait”關鍵字定義
實現特質中的方法使用“override”
混入特質(mixin)
當某個特質被用於組合類時,被稱為混入
一個類只能有一個父類但是可以有多個混入(分別使用關鍵字extends和with)
案例:
注:構造順序由左往右,如果前面已經構造了某個父類,後面子類的該父類不會重複構造
動態混入特質
案例
package nj.zb.kb09.oop
//特質
trait Type1{
def wheele:String={
"有四個輪子"
}
def run():Unit
}
trait Type2{
def fly():Unit={
println("可以飛")
}
def downSea():Unit={
println("下海")
}
}
abstract class Car {
def brand:String
def engine:String
def didi():String={
"汽車鳴笛滴滴滴"
}
}
class BMW extends Car with Type1 with Type2 {
override def brand: String = {
"德國寶馬系"
}
override def engine: String = {
"6.0自然吸氣,燃油動力"
}
override def run(): Unit = {
println("在陸地上跑")
}
}
class LingYun extends Car{
override def brand: String = {
"凌雲汽車"
}
override def engine: String = {
"純電動汽車"
}
}
object DemoCar{
def main(args: Array[String]): Unit = {
val bWM =new BMW
println(bWM.brand)
println(bWM.engine)
println(bWM.didi())
println(bWM.wheele)
bWM.run()
//動態混入特質
val lingYun:LingYun with Type1 with Type2= new LingYun with Type1 with Type2 {
override def run(): Unit = {
println("兩個輪子的電動汽車")
}
}
lingYun.run()
lingYun.fly()
println(lingYun.brand)
println(lingYun.engine)
}
}
特質與抽象類的選擇
- 1、優先使用特質
抽象類只能繼承一次
特質可混入多個 - 2、需要使用帶參構造方法時,使用抽象類
- 3、與Java互操作性
抽象類與Java完全可互操作
特質只有在不包含任何實現程式碼時才可互操作
相關文章
- 【Scala之旅】特質與高階型別型別
- Scala
- 高情商人群的十大特質
- Scala 簡介 [摘自 Scala程式設計 ]程式設計
- Scala學習總結(from scala for the Impatient)
- 一套優質的MES系統,應該具備哪些特質?
- Scala - DataFrame
- Awesome Scala
- scala(一)
- scala入門之編寫scala指令碼指令碼
- Scala(四):物件物件
- Scala(三):類
- scala(四)集合
- Scala操作Map
- scala 列舉
- 優質爬蟲代理IP的四大特點爬蟲
- 不可或缺的 IT 領導者的 7 大特質
- Flink - 安裝包scala 2.12和scala 2.11的區別
- 如何評價 ChatGPT 回答策略的 ensure only ethical usage 特質ChatGPT
- 空中翻書的兩種實現形式以及突出特質
- 展廳多媒體互動都具備哪些特質?
- 你們身邊成功的生意人有哪些特質
- Scala 的學習
- scala怎麼退出
- scala物件導向物件
- 17 scala集合使用
- The Coding Kata: FizzBuzzWhizz in Scala
- Scala筆記(一)筆記
- scala(二)-for迴圈
- scala(三)函式函式
- Scala 類和物件物件
- Scala 語法(一)
- Scala陣列操作陣列
- scala中的sealed
- Intellij IDEA 安裝Scala外掛 + 建立Scala專案(Hello World!)IntelliJIdea
- 展廳中互動滑軌屏的幾大使用特質
- 根據臉型選項鍊,打造自己的獨特氣質
- 一個優質的專案應該具有什麼特點