91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#中Abstract方法和Virtual方法有什么區別

發布時間:2022-04-18 10:11:07 來源:億速云 閱讀:459 作者:iii 欄目:開發技術

本篇內容介紹了“C#中Abstract方法和Virtual方法有什么區別”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

簡介:

c#中Abstract和Virtual比較容易混淆,都與繼承有關,并且涉及override的使用。virtual可以被子類重寫,而abstract必須被子類重寫。virtual修飾的方法必須有實現(哪怕是僅僅添加一對大括號),而abstract修飾的方法一定不能實現。它們有一個共同點:如果用來修飾方法,前面必須添加public,要不然就會出現編譯錯誤:虛擬方法或抽象方法是不能私有的。畢竟加上virtual或abstract就是讓子類重新定義的,而private成員是不能被子類訪問的。

一、Virtual方法(虛方法)

virtual 關鍵字用于在基類中修飾方法。virtual的使用會有兩種情況:
情況1:在基類中定義了virtual方法,但在派生類中沒有重寫該虛方法。那么在對派生類實例的調用中,該虛方法使用的是基類定義的方法。
情況2:在基類中定義了virtual方法,然后在派生類中使用override重寫該方法。那么在對派生類實例的調用中,該虛方法使用的是派生重寫的方法。

virtual可以被子類重寫:

    class BaseTest1
    {
       public virtual void fun() { }//必須有實現
    }
    class DeriveTest1:BaseTest1
    {
        //public override void fun() { }
    }

virtual修飾的方法必須有實現(哪怕是僅僅添加一對大括號):

    public class Test1
    {
        public virtual void fun1(){}
    }

二、Abstract方法(抽象方法)

abstract關鍵字只能用在抽象類中修飾方法,并且沒有具體的實現。抽象方法的實現必須在派生類中使用override關鍵字來實現。
接口和抽象類最本質的區別:抽象類是一個不完全的類,是對對象的抽象,而接口是一種行為規范

abstract必須被子類重寫:

    abstract class BaseTest2
    {
        public abstract void fun();
    }
    class DeriveTest2 : BaseTest2
    {
        //public override void fun();錯誤1:沒有實現
        //public  void fun() { }  錯誤2:重寫時沒有添加override
        //override void fun() { }錯誤3:虛擬成員或者抽象成員不能是私有的(只要在父類中聲明了虛擬成員或抽象成員,即便是繼承的也要加上這個限制)
        public override void fun() { }//如果重寫方法; 錯誤:“A.DeriveTest2”不實現繼承的抽象成員“A.BaseTest2.fun()”    

    }

abstract修飾的方法一定不能實現:

    public abstract class Test2
    {
        public abstract void fun2() ;
    }

三、關鍵字

Static:當一個方法被聲明為Static時,這個方法是一個靜態方法,編譯器會在編譯時保留這個方法的實現。也就是說,這個方法屬于類,但是不屬于任何成員,不管這個類的實例是否存在,它們都會存在。就像入口函數Static void Main,因為它是靜態函數,所以可以直接被調用。

Virtua:當一個方法被聲明為Virtual時,它是一個虛擬方法,直到你使用ClassName variable = new ClassName();聲明一個類的實例之前,它都不存在于真實的內存空間中。這個關鍵字在類的繼承中非常常用,用來提供類方法的多態性支持。

overrride:表示重寫 這個類是繼承于Shape類
virtual,abstract是告訴其它想繼承于他的類 你可以重寫我的這個方法或屬性,否則不允許。
abstract:抽象方法聲明使用,是必須被派生類覆寫的方法,抽象類就是用來被繼承的;可以看成是沒有實現體的虛方法;如果類中包含抽象方法,那么類就必須定義為抽象類,不論是否還包含其他一般方法;抽象類不能有實體的。

“C#中Abstract方法和Virtual方法有什么區別”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

龙门县| 桃园县| 宜兰市| 霞浦县| 微山县| 萍乡市| 建德市| 汽车| 香格里拉县| 禹城市| 台南县| 沅江市| 黄大仙区| 孝感市| 饶平县| 特克斯县| 双鸭山市| 邵阳县| 金乡县| 台湾省| 长治县| 顺昌县| 广丰县| 芜湖县| 和林格尔县| 广东省| 永丰县| 缙云县| 河间市| 潼关县| 中方县| 平邑县| 手游| 江口县| 顺昌县| 大丰市| 马尔康县| 商河县| 凭祥市| 新巴尔虎左旗| 黔南|