91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

乌审旗| 荆州市| 浠水县| 渭南市| 山丹县| 隆昌县| 黄浦区| 游戏| 南岸区| 上饶市| 陕西省| 天门市| 长子县| 大英县| 延吉市| 普安县| 手机| 长丰县| 济源市| 洛川县| 广平县| 虞城县| 武宁县| 望江县| 明溪县| 沁源县| 托克逊县| 洛宁县| 临武县| 许昌县| 大城县| 忻城县| 白山市| 页游| 宜阳县| 旅游| 盱眙县| 策勒县| 龙游县| 深水埗区| 濉溪县|