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

溫馨提示×

溫馨提示×

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

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

java怎么通過混入來組合類

發布時間:2022-05-17 15:17:31 來源:億速云 閱讀:180 作者:iii 欄目:大數據

今天小編給大家分享一下java怎么通過混入來組合類的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

當某個特質被用于組合類時,被稱為混入。

abstract class A {  val message: String}class B extends A {  val message = "I'm an instance of class B"}trait C extends A {  def loudMessage = message.toUpperCase()}class D extends B with C
val d = new Dprintln(d.message)  // I'm an instance of class Bprintln(d.loudMessage)  // I'M AN INSTANCE OF CLASS B

類  D  有一個父類  B  和一個混入  C  。一個類只能有一個父類但是可以有多個混入(分別使用關鍵字  extend  和  with  )。混入和某個父類可能有相同的父類。  
現在,讓我們看一個更有趣的例子,其中使用了抽象類:
abstract class AbsIterator {  type T  def hasNext: Boolean  def next(): T}
該類中有一個抽象的類型  T  和標準的迭代器方法。
接下來,我們將實現一個具體的類(所有的抽象成員  T  、  hasNext  和  next  都會被實現):
   
     
   
   
   abstract class AbsIterator {
      
    
      type T
      
    
      def hasNext: Boolean
      
    
      def next(): T
      
    
    }
StringIterator  帶有一個  String  類型參數的構造器,可用于對字符串進行迭代。(例如查看一個字符串是否包含某個字符):
現在我們創建一個特質,也繼承于  AbsIterator  。
   
     
   
   
   trait RichIterator extends AbsIterator {
      
    
      def foreach(f: T => Unit): Unit = while (hasNext) f(next())
      
    
    }
該特質實現了  foreach  方法——只要還有元素可以迭代(  while (hasNext)  ),就會一直對下個元素(  next()  ) 調用傳入的函數  f: T => Unit  。因為  RichIterator  是個特質,可以不必實現  AbsIterator  中的抽象成員。
下面我們要把  StringIterator  和  RichIterator   中的功能組合成一個類。
   
     
   
   
   object StringIteratorTest extends App {
      
    
      class RichStringIter extends StringIterator("Scala") with RichIterator
      
    
      val richStringIter = new RichStringIter
      
    
      richStringIter foreach println
      
    
    }
新的類  RichStringIter  有一個父類  StringIterator  和一個混入  RichIterator  。如果是單一繼承,我們將不會達到這樣的靈活性。

以上就是“java怎么通過混入來組合類”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

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

AI

吉安县| 巨鹿县| 嵊泗县| 永登县| 阳谷县| 尖扎县| 日喀则市| 富宁县| 洛阳市| 集贤县| 和田县| 连平县| 佛山市| 闽侯县| 南部县| 宁化县| 犍为县| 子洲县| 额尔古纳市| 永顺县| 察隅县| 武定县| 连山| 图木舒克市| 三明市| 阜阳市| 兰溪市| 宁阳县| 嵊泗县| 股票| 白朗县| 东安县| 蒙城县| 宁陕县| 泰宁县| 沧源| 蓬莱市| 鄂伦春自治旗| 江都市| 温泉县| 康平县|