日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

重写,重载,抽象类,接口,抽象类和接口区别

發(fā)布時間:2025/7/25 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 重写,重载,抽象类,接口,抽象类和接口区别 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.多態(tài)之重寫,重載
?? ?重寫:當(dāng)一個子類繼承一父類,而子類中的方法與父類中的方法的名稱,參數(shù)個數(shù)、類型都完全一致時,就稱子類中的這個方法重寫了父類中的方法。
?? ?new,virtual,override

virtual方式:
?? ??? ??? ?父類使用virtual關(guān)鍵字修飾方法? public virtual void sleep(){},
?? ??? ??? ?子類使用override關(guān)鍵字修飾方法 public override void sleep(){}
?? ??? ??? ?特定場合:Person p = new Student()時,p.sleep()調(diào)用的時子類方法(非常靈活)
?? ?重載:一個類中的方法與另一個方法同名,但是參數(shù)個數(shù)或參數(shù)類型不同,這種方法稱之為重載方法。
2.密封修飾符:sealed
?? ?類: public sealed class A? 該類不能作為父類出現(xiàn),不能被繼承,類中的方法不能定義為virtual方法
?? ?方法: public sealed override void aaa(){}? sealed修飾方法的時候,通常和override配合使用,表明該方法不能再被重寫
3.抽象類
?? ?作用:提供一個可供多個子類共享的通用基類定義,它是一個特殊的類繼承關(guān)系,它可以包含一個抽象方法,所有派生子類必須重寫實(shí)現(xiàn)
?? ?案例:Person類,Student類,Teacher類
?? ??? ?a. abstract public class Person類中提供抽象abstract public void eat();
?? ??? ?b. 抽象類中的抽象方法無需直接實(shí)現(xiàn);
?? ??? ?c. 子類使用override重寫實(shí)現(xiàn)抽象方法
?? ?案例:鯽魚,鯉魚,Fish類 抽象類Fish類實(shí)現(xiàn)抽象方法 子類重寫實(shí)現(xiàn)

抽象方法:
使用abstract關(guān)鍵字 public abstract bool Withdraw(…);
抽象方法是必須被派生類覆寫的方法。
抽象方法是可以看成是沒有實(shí)現(xiàn)體的虛方法
如果類中包含抽象方法,那么類就必須定義為抽象類,不論是否還包含其它一般方法

虛方法:
使用virtual關(guān)鍵字 public virtual bool Withdraw(…);
調(diào)用虛方法,運(yùn)行時將確定調(diào)用對象是什么類的實(shí)例,并調(diào)用適當(dāng)?shù)母矊懙姆椒ā?br />虛方法可以有實(shí)現(xiàn)體 若一個實(shí)例方法的聲明中含有 virtual 修飾符,則稱該方法為虛擬方法;
一個虛擬方法的實(shí)現(xiàn)可以由派生類取代。取代所繼承的虛擬方法的實(shí)現(xiàn)的過程稱為重寫該方法;
在一個虛擬方法調(diào)用中,該調(diào)用所涉及的那個實(shí)例的運(yùn)行時類型確定了要被調(diào)用的究竟是該方法的哪一個實(shí)現(xiàn)。
?? ?抽象方法和虛方法的區(qū)別:

抽象方法是只有定義、沒有實(shí)際方法體的函數(shù),它只能在抽象函數(shù)中出現(xiàn),并且在子類中必須重寫;
虛方法則有自己的函數(shù)體,已經(jīng)提供了函數(shù)實(shí)現(xiàn),但是允許在子類中重寫或覆蓋。
?? ??? ?父類中的抽象方法不包含方法體,子類必須重寫;
?? ??? ?而虛方法必須要有方法體,子類可以不重寫?? ?
?? ?抽象類不能夠被直接實(shí)例化, 只能通過抽象類實(shí)例化它的子類?? ??? ?
4.接口
?? ?作用:接口可以實(shí)現(xiàn)多繼承,一個類只能繼承一個父類,但可以實(shí)現(xiàn)多個接口,接口也是抽象的體現(xiàn),適合為不相關(guān)的類提供通用功能
?? ?案例:人Human、魚Fish、青蛙Frog
?? ??? ?a.定義接口及方法 interface ISwim { void swim(); }
?? ??? ?b.給不相干的事物提供一個公共的方法,一個約定
?? ??? ?c.實(shí)現(xiàn)類需要使用:實(shí)現(xiàn)接口,并必須實(shí)現(xiàn)接口中的方法
?? ??? ?d.封裝一個接口調(diào)用類,專門負(fù)責(zé)調(diào)用接口實(shí)現(xiàn)類中的方法(各司其值)
?? ??? ??? ?public void runMethod(ISwim iswim) { iswim.swim(); }
?? ??? ??? ?Test t = new Test();
?????????? ??? ??? ?ISwim isw;
?? ??? ??? ?isw = new Human();
?? ??? ???????? t.runMethod(isw);
?? ?總結(jié): 把實(shí)現(xiàn)接口的Class類封裝成一個組件,那么當(dāng)我們的用戶需要擴(kuò)充功能的時候,我們只需要在外部做很小的修改就能實(shí)現(xiàn),
?? ?根本就用不著改動我們已經(jīng)封裝好的組件
?? ?c#中的系統(tǒng)接口, 舉例:使用Person對象類型無法直接進(jìn)行排序(報錯),需要添加IComparable<Person>接口實(shí)現(xiàn)CompareTo()方法?? ?
5.抽象類和接口區(qū)別
?? ?抽象類:?? ?共性大于個性,共性相同的個體間必然具有相同的屬性與行為,相同行為的實(shí)現(xiàn)方式具有一定區(qū)別(繼承,重寫)
?? ?接口: ?? ?個性大于共性,差異較大的個性間具有某些相同的行為,相同行為的實(shí)現(xiàn)方式有較大區(qū)別。
?? ?案例:
?? ??? ?接口: Animal接口, Dog類,Cat類,Tortoise類
?? ??? ?????? void active();? //行為方法,描述各種動物的特性
?? ??? ?抽象類: 抽象方法active();??? ????
???

轉(zhuǎn)載于:https://www.cnblogs.com/zeng-qh/p/10251426.html

總結(jié)

以上是生活随笔為你收集整理的重写,重载,抽象类,接口,抽象类和接口区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。