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