好程序員大數據學習路線分享Scala系列之抽象類

好程序員大數據學習路線分享Scala系列之抽象類程序員

1抽象類的定義ide

定義一個抽象類:學習

若是某個類至少存在一個抽象方法或一個抽象字段,則該類必須聲明爲abstract。大數據

abstract class Person{
//沒有初始值,抽象字段
var name:String
//沒有方法體,是抽象方法
def id: Int

}

class Employ extends Person{
var name:String="Fred"
//實現,不須要overide關鍵字
def id = name.hashCode

}element

2抽象類的應用hash

定義帶有抽象類型成員的特質:it

trait Buffer {
  type T
  val element: T
}class

定義一個抽象類,增長類型的上邊界List

abstract class SeqBuffer extends Buffer {
  type U
  //
  type T <: Seq[U]
  def length = element.length
}程序

abstract class IntSeqBuffer extends SeqBuffer {
  type U = Int
}

abstract class IntSeqBuffer extends SeqBuffer {
  type U = Int
}

//使用匿名類將 type T 設置爲 List[Int]
def newIntSeqBuf(elem1: Int, elem2: Int): IntSeqBuffer =
  new IntSeqBuffer {
       type T = List[U]
       val element = List(elem1, elem2)
     }
val buf = newIntSeqBuf(7, 8) println("length = " + buf.length) println("content = " + buf.element)

相關文章
相關標籤/搜索