Scala類
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的
object
Scala中沒有靜態修飾符,static,在object下的成員全部都是靜態的,如果在類中聲明了與該類相同的名字的object則該object是該類的“半生對象”,可以理解把類中的static集中放到了object對象中,伴生對象和類文件必須是同一個源文件,可以用伴生對象做一些初始化的操作。
trait
在java中可以通過interface實現多重繼承,在Scala中可以通過特征(trait)實現多重繼承,不過與java不同的是,它可以定義自己的屬性和實現方法體,在沒有自己的實現方法體時可以認為它時java interface是等價的,在Scala中也是一般只能繼承一個父類,可以通過多個with進行多重繼承。