Scala語法詳解特質 (Traits)

      網友投稿 961 2022-05-30

      特質 (Traits) 用于在類 (Class)之間共享接口 (Interface)和字段 (Fields)。類似Java8的接口。 類和對象 (Objects)可以繼承Trait,但Trait不能被實例化,因此特質沒有參數。

      定義

      最簡化的就是關鍵字trait+標識符:

      trait HairColor

      1

      特征作為泛型類型和抽象方法非常有用。

      trait Iterator[A] { def hasNext: Boolean def next(): A }

      1

      2

      3

      4

      擴展 trait Iterator [A] 需要一個類型 A 和實現方法hasNext和next。

      使用

      使用 extends 擴展Trait。然后使用 override 關鍵字實現trait里面的任何抽象成員:

      trait Iterator[A] { def hasNext: Boolean def next(): A } class IntIterator(to: Int) extends Iterator[Int] { private var current = 0 override def hasNext: Boolean = current < to override def next(): Int = { if (hasNext) { val t = current current += 1 t } else 0 } } val iterator = new IntIterator(10) iterator.next() // returns 0 iterator.next() // returns 1

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      這個類 IntIterator 將參數 to 作為上限。它擴展了 Iterator [Int],這意味著方法 next 必須返回一個Int。

      子類型

      凡是需要特質的地方,都可以由該特質的子類型來替換。

      import scala.collection.mutable.ArrayBuffer trait Pet { // 抽象字段 val name: String } // name 由Cat和Dog的構造器實現 class Cat(val name: String) extends Pet class Dog(val name: String) extends Pet val dog = new Dog("Harry") val cat = new Cat("Sally") val animals = ArrayBuffer.empty[Pet] animals.append(dog) animals.append(cat) // 調用pet.name的前提是它必須在特質Pet的子類型中得到了實現。 animals.foreach(pet => println(pet.name))

      1

      2

      3

      4

      5

      Scala語法詳解:特質 (Traits)

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      Scala

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:時序數據分析——周期性-平穩性檢驗
      下一篇:GCC常用命令總結
      相關文章
      亚洲AV色欲色欲WWW| 亚洲人成网77777亚洲色| 好看的亚洲黄色经典| 亚洲av日韩综合一区二区三区| 少妇中文字幕乱码亚洲影视| 亚洲AV无码专区亚洲AV伊甸园| 亚洲精品无码高潮喷水在线| 亚洲综合男人的天堂色婷婷| 亚洲国产精品va在线播放| 亚洲熟妇无码AV在线播放| 伊人亚洲综合青草青草久热| 国产亚洲精品福利在线无卡一| 亚洲综合无码AV一区二区| 狼人大香伊蕉国产WWW亚洲| 久久久久久a亚洲欧洲AV| 亚洲国产另类久久久精品| 亚洲欧洲国产精品香蕉网| 国产AV无码专区亚洲A∨毛片| 亚洲精品乱码久久久久久蜜桃不卡| 国产精品亚洲аv无码播放| 国产亚洲人成网站在线观看不卡| 亚洲?v女人的天堂在线观看| 一级毛片直播亚洲| 亚洲精品无码永久在线观看| 亚洲人成人无码网www国产| 亚洲精品NV久久久久久久久久| 国产亚洲精彩视频| 亚洲AV无码一区二区三区在线观看 | 日韩va亚洲va欧洲va国产| 亚洲综合色自拍一区| 国产aⅴ无码专区亚洲av麻豆| 亚洲天堂中文字幕在线| 亚洲自偷自偷偷色无码中文| 国产亚洲精品国产| 亚洲视频免费观看| 97亚洲熟妇自偷自拍另类图片| 亚洲国产精品无码久久一区二区 | 亚洲熟女精品中文字幕| MM1313亚洲国产精品| 国产成人精品日本亚洲专区| 亚洲美女又黄又爽在线观看|