第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么第一個(gè)gender打印出來的是null

為什么第一個(gè)gender打印出來的是null

暮色呼如 2019-05-12 14:10:01
題目描述為什么第一個(gè)gender打印出來的是null題目來源及自己的思路我已經(jīng)初試化了valgender:String="male",但是貌似結(jié)果不對(duì)。相關(guān)代碼objectObjectExample{defmain(args:Array[String]):Unit={valstudent=newStudent("zhu",18,"zz")}classPeople(valname:String,valage:Int){println("constructor")println(name)valgender:String="male"println(gender)defthis(name1:String)={this("ci",18)println("subconstructor")println(name)}}classStudent(name:String,age:Int,valschool:String)extendsPeople(name,age){println("derivedconstructor")println(name)println(school)overridevalgender:String="female"println(gender)}}錯(cuò)誤信息constructorzhunullderivedconstructorzhuzzfemale
查看完整描述

2 回答

?
莫回?zé)o

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

把class移到外面仍然是無效的。我對(duì)這個(gè)理解就是,val類型不能被初始化兩次。如果非要用重寫來“初試化”兩次,那么編譯器就會(huì)忽略父類的初始化,而去使用子類的初始化,而此時(shí)子類的初始化并沒有執(zhí)行,所以只能是null。改成lazy類型就可以了,當(dāng)然了,還有其他更多的方法。參考資料見VariablehasbeenInitializedinScalaclass,butwhatitprintisnull?(這個(gè)問題是我提出的)。scala官網(wǎng)也有解釋W(xué)HYISMYABSTRACTOROVERRIDDENVALNULL?
                            
查看完整回答
反對(duì) 回復(fù) 2019-05-12
?
一只名叫tom的貓

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊

有本書適合這種類型的坑:《Scala謎題》
第4章繼承以下規(guī)則控制val的初始化和重載行為:1.超類會(huì)在子類之前初始化;2.按照聲明的順序?qū)Τ蓡T初始化;3.當(dāng)一個(gè)val被重載時(shí),只能初始化一次;4.與抽象val類似,重載的val在超類構(gòu)造期間會(huì)有一個(gè)缺省的初始值。
里面也說了,可以使用lazyval,但lazyval也有一些缺點(diǎn):
1.由于在底層發(fā)生同步,這會(huì)引起輕微的性能成本;2.不能聲明抽象lazyval;3.使用lazyval容易產(chǎn)生循環(huán)引用,從而導(dǎo)致首次訪問時(shí)發(fā)生棧溢出錯(cuò)誤,甚至可能發(fā)生死鎖;4.如果在對(duì)象間做了聲明而lazyval間的循環(huán)依賴卻不存時(shí),就可能會(huì)發(fā)生死鎖,這種情況也許非常微妙,不易覺察。
此外,還有其余兩個(gè)方法,一個(gè)是將val改為def,另一種是預(yù)初始化字段,如下:
classStudent(name:String,age:Int,valschool:String)extends{
overridevalgender:String="female"
}withPeople(name,age){
println("derivedconstructor")
println(name)
println(school)
println(gender)
}
                            
查看完整回答
反對(duì) 回復(fù) 2019-05-12
  • 2 回答
  • 0 關(guān)注
  • 475 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)