中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

新兴县| 乐东| 晋江市| 桐梓县| 增城市| 肥东县| 克东县| 花莲市| 普宁市| 苏尼特左旗| 侯马市| 秭归县| 台北市| 建德市| 大英县| 四子王旗| 杂多县| 柳林县| 郁南县| 毕节市| 达孜县| 黑水县| 澄城县| 玛多县| 皋兰县| 徐水县| 迭部县| 长治县| 元朗区| 晴隆县| 社旗县| 凌源市| 屏边| 博爱县| 视频| 敦煌市| 宿迁市| 博湖县| 乌兰察布市| 民乐县| 清苑县|