5.scala中的對象

版權(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 讀《快學(xué)Scala 》一書的摘要 Scala 運行于JVM之上,擁有海量類庫和工具,兼顧函數(shù)式編程和面向?qū)ο蟆?在...
    abel_cao閱讀 1,375評論 0 8
  • Scala學(xué)習(xí)筆記: 1.1 scala的基礎(chǔ)語法 聲明與定義(賦值):聲明變量時可以指定類型,不指定也可以自動識...
    哎喲喂嘍閱讀 633評論 0 2
  • scala文檔 包含內(nèi)容 1基礎(chǔ) 2控制結(jié)構(gòu)和函數(shù) 3數(shù)組相關(guān)操作 4映射和元組 5類 6對象 7.包和引入(x)...
    zlcook閱讀 1,047評論 0 3
  • 好久沒有這樣的感覺了,以為長大了,勢力了,斤斤計較了,除了親人,無法真心喜歡一個人。他找我聊天,我一邊聊一邊會想他...
    沙漠里的仙人掌閱讀 217評論 0 0
  • 夜幕低垂,邂逅了星河, 寒風(fēng)搖曳,舞動著夜影, 門口最后坐著的那個人也進屋關(guān)上了門。 時光嘀嗒嘀嗒, 沙發(fā)上坐著的...
    蔣小志jxz閱讀 353評論 6 10

友情鏈接更多精彩內(nèi)容