8.Scala面向?qū)ο箝_(kāi)發(fā)-2

8.1 對(duì)象

  • 單例對(duì)象
  • 伴生對(duì)象
  • 擴(kuò)展類(lèi)和特質(zhì)
    • 構(gòu)造一個(gè)擴(kuò)展了指定類(lèi)和特質(zhì)的類(lèi)的對(duì)象鸟顺,同時(shí)擁有對(duì)象定義中給出的所有特性
  • apply方法

8.1.1 單例對(duì)象

  • object語(yǔ)法定義了某個(gè)類(lèi)的單個(gè)實(shí)例
  • 對(duì)象的構(gòu)造器在該對(duì)象第一次被使用時(shí)調(diào)用
  • object語(yǔ)法結(jié)構(gòu)與class大致相同旗吁,除了object不能提供構(gòu)造器參數(shù)
  • 通常使用單例對(duì)象的環(huán)境:
    • 作為存放工具函數(shù)或常量的地方
    • 共享單個(gè)不可變實(shí)例
    • 利用單個(gè)實(shí)例協(xié)調(diào)某個(gè)服務(wù)


8.1.2 伴生對(duì)象

  • 當(dāng)一個(gè)單例對(duì)象存在同名類(lèi)的時(shí)候理肺,稱為伴生對(duì)象
    • class HELLOWORLD{...}
    • objectHELLOWORLD{...}
  • 類(lèi)和其伴生對(duì)象可以互相訪問(wèn)私有屬性,但必須存在同一個(gè)源文件中
  • 類(lèi)的伴生對(duì)象可以被訪問(wèn)闷哆,但并不在作用域中礁遵,如;
    • class HELLOWORLD{...}
    • object HELLOWORLD{ def NOW{...} }
  • HELLOWORLD 類(lèi)必須通過(guò)HELLOWORLD.NOW調(diào)用伴生對(duì)象中的NOW方法,而不能直接用NOW來(lái)調(diào)用

8.1.3 Apply方法

  • 需要構(gòu)造有參數(shù)需求的伴生對(duì)象時(shí)搏嗡,可定義并使用apply方法
class HELLOWORLD(var m:String,n:Char){...}
object HELLOWORLD{
def apply(n:Char)=new HELLOWORLD(""窿春,n) 
} 

val hi=HELLOWORLD('j')

8.2 繼承-1

  • 拓展
  • 重寫(xiě)
  • 抽象

8.2.1 拓展

  • extends是Scala中實(shí)現(xiàn)繼承的保留字
  • class week extends month{...}
    • week類(lèi)繼承了month類(lèi)所有非私有成員
    • week類(lèi)是month類(lèi)的子類(lèi),month類(lèi)是week類(lèi)的超類(lèi)
    • 子類(lèi)能重寫(xiě)超類(lèi)的成員(具有相同名稱和參數(shù))
  • class week(val num:Int) extendsmonth(var no.:Int){...}
  • object day extendsweek{...}
    • 單例對(duì)象同樣能從類(lèi)中繼承采盒,與類(lèi)的繼承語(yǔ)法相同

8.2.2 重寫(xiě)

  • Scala中使用override保留字進(jìn)行方法谁尸、字段重寫(xiě)
    • class week extends month{
    • override def firstday = {...}
    • }
  • override保留字實(shí)際使用類(lèi)似于private,聲明這個(gè)保留字后的定義纽甘、聲明是對(duì)超類(lèi)的重寫(xiě)良蛮,因此,其也可以寫(xiě)在類(lèi)定義的參數(shù)中
    • class week(override val lastday:String)extends month{...}
  • 子類(lèi)的重寫(xiě)或修改Scala會(huì)檢查其超類(lèi)悍赢,但是决瞳,超類(lèi)的修改并不會(huì)檢查其子類(lèi)
  • 重寫(xiě)包括字段和方法,但參數(shù)不同的方法可以不重寫(xiě)
    • class month{ def secondday(m:String)={...}}
    • class week extends month{ def secondday ={...}}

8.2.2.1 重寫(xiě)規(guī)則

  • 重寫(xiě)def
    • 用val :利用val能重寫(xiě)超類(lèi)用沒(méi)有參數(shù)的方法(getter)
    • 用def:子類(lèi)的方法與超類(lèi)方法重名
    • 用var:同時(shí)重寫(xiě)getter左权、setter方法皮胡,只重寫(xiě)getter方法報(bào)錯(cuò)
  • 重寫(xiě)val
    • 用val:子類(lèi)的一個(gè)私有字段與超類(lèi)的字段重名,getter方法重寫(xiě)超類(lèi)的getter方法
  • 重寫(xiě)var
    • 用var:且當(dāng)超類(lèi)的var是抽象的才能被重寫(xiě)赏迟,否則超類(lèi)的var都會(huì)被繼承

8.2.2.2 重寫(xiě)示例

  • class month{
  • val one = 25 //可在子類(lèi)中用val重寫(xiě)
  • var two = 15 //不可在子類(lèi)中用var重寫(xiě)屡贺,因?yàn)椴皇浅橄蟮?/li>
  • var three:Int
  • def firstday = //可在子類(lèi)中用val重寫(xiě)
  • def now = //可在子類(lèi)中用var重寫(xiě)
  • def now_ =
  • def lastday(m:Char)={} //可在子類(lèi)中用def重寫(xiě)
  • }
  • 子類(lèi)中,def只能重寫(xiě)超類(lèi)的def锌杀,val能重寫(xiě)超類(lèi)的val或不帶參數(shù)的def甩栈,var只能重寫(xiě)超類(lèi)中抽象的var或者超類(lèi)的getter/setter對(duì)

8.2.3 抽象

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末究抓,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子袭灯,更是在濱河造成了極大的恐慌刺下,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稽荧,死亡現(xiàn)場(chǎng)離奇詭異怠李,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)蛤克,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)夷蚊,“玉大人构挤,你說(shuō)我怎么就攤上這事√韫模” “怎么了筋现?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)箱歧。 經(jīng)常有香客問(wèn)我矾飞,道長(zhǎng),這世上最難降的妖魔是什么呀邢? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任洒沦,我火速辦了婚禮,結(jié)果婚禮上价淌,老公的妹妹穿的比我還像新娘申眼。我一直安慰自己,他們只是感情好蝉衣,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布括尸。 她就那樣靜靜地躺著,像睡著了一般病毡。 火紅的嫁衣襯著肌膚如雪濒翻。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天啦膜,我揣著相機(jī)與錄音有送,去河邊找鬼。 笑死僧家,一個(gè)胖子當(dāng)著我的面吹牛娶眷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播啸臀,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼届宠,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼烁落!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起豌注,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤伤塌,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后轧铁,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體每聪,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年齿风,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了药薯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡救斑,死狀恐怖童本,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情脸候,我是刑警寧澤穷娱,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站运沦,受9級(jí)特大地震影響泵额,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜携添,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一嫁盲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧烈掠,春花似錦亡资、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至母谎,卻和暖如春瘦黑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背奇唤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工幸斥, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人咬扇。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓甲葬,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親懈贺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子经窖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容