scala class和object,trait的區別

Scala類java

class Counter {
  private var value = 0 // 必須初始化字段
  def increment() { value += 1 } // 方法默認公有
  def current = value // 調用必須是myCounter.current這種風格
}
class Student{  
  var age=20     //底層編譯器會自動爲私有的age添加get和set的公有方法,能夠理解爲僞public類型  
  private[this] var gender="male" //private[this] 只有該類的this能夠使用  
  private var name="clow" //聲明瞭private,底層編譯器會自動爲私有的name添加get和set的私有方法  
  //可是能夠本身定義屬性方法  
  def getName=this.name  
  def setName(value:String){this.name=value}  
}

  

Scala類和java類中有些區別,在Scala聲明private變量會Scala編譯器會自動生成get,set,在Scala中變量是須要初始化的,若是不聲明private默認是public的this

object對象

Scala中沒有靜態修飾符,static,在object下的成員所有都是靜態的,若是在類中聲明瞭與該類相同的名字的object則該object是該類的「半生對象」,能夠理解把類中的static集中放到了object對象中,伴生對象和類文件必須是同一個源文件,能夠用伴生對象作一些初始化的操做。blog

trait繼承

在java中能夠經過interface實現多重繼承,在Scala中能夠經過特徵(trait)實現多重繼承,不過與java不一樣的是,它能夠定義本身的屬性和實現方法體,在沒有本身的實現方法體時能夠認爲它時java interface是等價的,在Scala中也是通常只能繼承一個父類,能夠經過多個with進行多重繼承。rem

相關文章
相關標籤/搜索