亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

scala的特質是什么

發布時間:2021-12-08 15:05:02 來源:億速云 閱讀:242 作者:iii 欄目:大數據

這篇文章主要講解了“scala的特質是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“scala的特質是什么”吧!

特質 (Traits) 用于在類 (Class)之間共享程序接口 (Interface)和字段 (Fields)。它們類似于Java 8的接口。類和對象 (Objects)可以擴展特質,但是特質不能被實例化,因此特質沒有參數。

定義一個特質

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

trait HairColor

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

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

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

使用特質

使用 extends 關鍵字來擴展特質。然后使用 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()iterator.next()

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

子類型

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

import scala.collection.mutable.ArrayBuffer
trait Pet {  val name: String}
class Cat(val name: String) extends Petclass 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)animals.foreach(pet => println(pet.name))
在這里  trait Pet 有一個抽象字段  name ,  name 由Cat和Dog的構造函數中實現。最后一行,我們能調用  pet.name的前提是它必須在特質Pet的子類型中得到了實現。

感謝各位的閱讀,以上就是“scala的特質是什么”的內容了,經過本文的學習后,相信大家對scala的特質是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

修武县| 扎兰屯市| 兴山县| 息烽县| 烟台市| 彝良县| 东光县| 郸城县| 安岳县| 巴青县| 丽江市| 贵溪市| 介休市| 察隅县| 娄底市| 抚宁县| 绥宁县| 武冈市| 合作市| 衡阳县| 常熟市| 汝城县| 吴堡县| 巴林右旗| 随州市| 泽库县| 富裕县| 菏泽市| 镇康县| 井研县| 云梦县| 昭觉县| 雅安市| 宣汉县| 南漳县| 望江县| 东港市| 泸西县| 松潘县| 永州市| 凉城县|