版權(quán)申明:轉(zhuǎn)載請注明出處。
文章來源:http://bigdataer.net/?p=285
排版亂?請移步原文獲得更好的閱讀體驗
1.單例對象
scala中沒有靜態(tài)類或者靜態(tài)方法,都是通過object實現(xiàn)的,它表示某個類的單例對象。如object People是class People的單例對象。
2.伴生對象
java中有些類可能會既有靜態(tài)方法又有實例方法,在scala中靜態(tài)方法存在于對象中,也就意味中scala中需要有這么一個東西,它既是類,也含有對象。其中的對象就是類的伴生對象,同樣的,類就是對象的伴生類。需要注意的是類和它的伴生對象可以相互訪問私有屬性,它們也必須存在于同一個源文件中。如:
class People{
private val name:String = ""
def run()={
……
}
}
object Peole{
private var age:Int
def age(){
this.age += 1
}
}
3.apply方法
調(diào)用apply方法其實是調(diào)用的類對應(yīng)的伴生對象的apply方法,apply方法類似于使用構(gòu)造器,但是在嵌套結(jié)構(gòu)中使用apply方法能省去使用new。Array("marry","alice")其實是調(diào)用了Array類對應(yīng)的伴生對象的apply方法??匆粋€實例:
class Peopel(salary:Int){
……
}
object People{
def apply(salary:Int):People= {
new People(salary)
}
}
val p = People(100) //此處調(diào)用了伴生對象的apply方法
4.枚舉
scala中沒有枚舉類型,實現(xiàn)方式是通過Enumeration產(chǎn)出枚舉。比如:
object ColorEnum extends Enumeration {
val Red,Green,Yellow = Value //調(diào)用了Value方法生成三個枚舉值
/*相當(dāng)于
val Red = Value
val Green = Value
val Yellow = Value
*/
}
更多文章請關(guān)注微信公眾號:bigdataer