1 回答

TA貢獻(xiàn)9條經(jīng)驗(yàn) 獲得超4個(gè)贊
第一個(gè)問(wèn)題:屬性是對(duì)字段的封裝,說(shuō)白了,類中實(shí)際能夠存儲(chǔ)數(shù)據(jù)的還是字段,沒(méi)有字段,屬性不就沒(méi)用了嗎。不考慮安全性的情況下,屬性倒是顯得多余。實(shí)際上,屬性很有必要,通過(guò)對(duì)字段的封裝,實(shí)現(xiàn)對(duì)字段的安全訪問(wèn)
第二個(gè)問(wèn)題:接口是特殊的類,是一種抽想到極致的類。有的時(shí)候,我們希望寫一個(gè)函數(shù),傳入不同類型的類參數(shù),但是他們都具備同一種方法(多態(tài)),這種情況下普通的繼承也是可以的,但是最原始的基類中需要定義這個(gè)方法,但是函數(shù)體顯得沒(méi)有意義,接口中提供的這種不需要定義函數(shù)體,只需要聲明函數(shù)原型,使得代碼更簡(jiǎn)潔。
?????? 這個(gè)時(shí)候你可能會(huì)問(wèn),為什么一定要?jiǎng)?chuàng)造一個(gè)新的關(guān)鍵字interfance,理由很簡(jiǎn)單,C++中就是沒(méi)有這個(gè)關(guān)鍵字的,也沒(méi)有abstract這些復(fù)雜的關(guān)鍵字,為什么呢,因?yàn)镃++這種語(yǔ)言支持多繼承,即一個(gè)子類,同時(shí)繼承多個(gè)父類。因此任何類,不論是接口類還是抽象類還是普通類,一律都能直接繼承多個(gè)。但是C#不行啊,規(guī)定只能有一個(gè)基類,要繼承多個(gè),除非其余的都是接口類。這個(gè)怎么控制呢,就需要interfance來(lái)把關(guān)了,所以interfance是為了顯示說(shuō)明接口類,使得多繼承的時(shí)候不至于混亂
第三個(gè)問(wèn)題:靜態(tài)方法屬于類,普通方法屬于對(duì)象。在調(diào)用靜態(tài)方法的時(shí)候,可能沒(méi)有實(shí)例化對(duì)象,所以只有靜態(tài)字段和屬性可以調(diào)用,這種情況下,我們可以認(rèn)為,靜態(tài)方法是用來(lái)調(diào)用靜態(tài)字段或者屬性的。普通方法是用來(lái)調(diào)用普通字段的。如果你學(xué)過(guò)C語(yǔ)言或者C++語(yǔ)言,你會(huì)發(fā)現(xiàn),C#中的靜態(tài)字段更像是一個(gè)全局變量,而靜態(tài)方法是為了更方便的利用這個(gè)全局變量。
- 1 回答
- 0 關(guān)注
- 1222 瀏覽
添加回答
舉報(bào)