抽象類(lèi)與接口

抽象類(lèi):

在程序中使用關(guān)鍵字abstract

如果說(shuō)正常類(lèi)是一個(gè)完整的類(lèi)的話(huà),抽象類(lèi)實(shí)際上是一個(gè)不完整的類(lèi)

抽象類(lèi)的特點(diǎn):

? ? ? ?1.如果類(lèi)中存在抽象方法,那么該方法不可以有實(shí)現(xiàn)部分,只能聲明方法。

? ? ? ?2.含有抽象方法的類(lèi)一定是抽象類(lèi)

? ? ? ?3.抽象類(lèi)不一定含有抽象方法

? ? ?4.如果子類(lèi)的父類(lèi)為抽象類(lèi)并且含有抽象方法的話(huà),子類(lèi)必須實(shí)現(xiàn)重寫(xiě)該抽象方法

? ? ? ?5.vinrual和abstract 不能使用 private 修飾符,要使用public修飾符

? ? ? ?6.virtual不能和abstract放在一起用

? ? ? ?7.抽象類(lèi)不能被實(shí)例化

? ? ? ?8.抽象類(lèi)可以包含靜態(tài)成員

抽象了的作用:

父類(lèi)約束子類(lèi)行為。




虛方法和抽象方法的探討

虛方法和抽象方法都可以供派生類(lèi)重寫(xiě)

? ? ? ? ? 1.虛方法必須有實(shí)現(xiàn)部分,并且為派生類(lèi)提供了重寫(xiě)該方法的選項(xiàng).

? ? ? ? ? ? ? ? ? ? ? ? ?public virtual void Say(); //錯(cuò)誤

? ? ? ? ? ?2.抽象方法沒(méi)有實(shí)現(xiàn)部分,并且抽象方法的派生是一種強(qiáng)迫性的

? ? ? ? ? ? ? ?繼承抽象類(lèi)就必須實(shí)現(xiàn)抽象方法,這與Virtual是不同的

? ? ? ? ? ?3.抽象方法只能在抽象類(lèi)中進(jìn)行聲明.抽象方法必須在派生類(lèi)重寫(xiě)

? ? ? ? ? ? ? ?含有抽象的方法必然是抽象類(lèi).也就是說(shuō)必須強(qiáng)制聲明abstract,系統(tǒng)不會(huì)自動(dòng)為我們添加

? ? ? ? ? ? 4.抽象方法必須在派生類(lèi)重寫(xiě),這一點(diǎn)和interface類(lèi)似,虛方法不必

虛方法和抽象的聯(lián)系:

? ? ? ? ? ? 1.無(wú)論是虛方法或者抽象方法,重寫(xiě)必須使用override關(guān)鍵字

? ? ? ? ? ? ?面向接口編程.




接口:接口就是公共契約

? ? ? ? ? ? ?接口的關(guān)鍵字:interface

? ? ? ? ? ? ?接口和類(lèi)屬于同級(jí)關(guān)系,都屬于C#中額編程

? ? ? ? ? ? ?接口也被稱(chēng)為純潔的抽象類(lèi)

接口特點(diǎn):

? ? ? ? ?1.接口不能有字段

? ? ? ? ?2.接口內(nèi)不能有修飾符

? ? ? ? ?3.接口中不能有方法體(方法實(shí)現(xiàn))

? ? ? ? ?4.接口不可以被直接實(shí)例化

? ? ? ? ?5.接口成員總是公共的

? ? ? ? ? 6.接口中可以有屬性,但是不能有修飾符

? ? ? ? ? 7.接口中可以有索引器/事件聲明

? ? ? ? ? 8.接口中聲明的方法,子類(lèi)實(shí)現(xiàn)的時(shí)候雖然也用override關(guān)鍵字,但是不屬于重寫(xiě),這里不能把override顯示的聲明出來(lái)

開(kāi)發(fā)準(zhǔn)則:盡量多用接口

能用接口不用抽象類(lèi),能用抽象類(lèi)不要虛方法.

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

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

  • 你很清楚的知道什么時(shí)候用抽象類(lèi),什么時(shí)候用接口么?p.s. 多文字預(yù)警! 1 抽象類(lèi)和接口簡(jiǎn)介 1.1 抽象類(lèi) ...
    Sharember閱讀 2,425評(píng)論 9 55
  • 一、抽象類(lèi) 1、抽象類(lèi)含義的概括: 當(dāng)多個(gè)類(lèi)出現(xiàn)相同功能時(shí),但功能主體不同,這樣可以向上抽取,抽取時(shí)只抽取功能定義...
    玉圣閱讀 927評(píng)論 0 6
  • 1 抽象類(lèi)和接口簡(jiǎn)介1.1 抽象類(lèi)1.1.1 一個(gè)小案例我們先來(lái)看這樣一個(gè)案例:世界上有許許多多不同種類(lèi)的動(dòng)物,每...
    走丟的小英俊閱讀 719評(píng)論 3 2
  • 讀書(shū)向來(lái)是為歷代人所仰慕的事情。培根曾深有感觸的說(shuō):書(shū)籍是在時(shí)代的浪濤中航行的思想之船,它小心翼翼地把珍貴的貨物送...
    萍水相逢_422f閱讀 300評(píng)論 0 0
  • 給自己一點(diǎn)時(shí)間,讓自己成長(zhǎng)。 不知為何在第一次寫(xiě)作的此刻,腦袋里冒出這樣一句話(huà)。大約是為了給自己鼓勵(lì)和打氣。曾經(jīng)每...
    靜一_bdae閱讀 169評(píng)論 0 1

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