亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#中虛方法virtual示例詳解

 更新時間:2025年03月31日 11:13:37   作者:木偶  
這篇文章主要介紹了C#中虛方法virtual的相關知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧

前言;在前面的博客重寫中提到了虛方法和抽象類,本博文詳細介紹下虛方法:

一.虛方法的定義:

當有一個定義在類中的函數需要在繼承類中實現時,可以使用虛方法,虛方法是使用關鍵字virtual聲明的,虛方法可以在不同的繼承類中有不同的實現,即為基類中定義的允許在派生類中重寫的方法;

二.虛方法的聲明:

一般的聲明形式如下:

訪問修飾符 virtual 函數返回類型 函數名(參數表) {函數體};

舉例:

 class Person
    {
        public virtual void XXX()
        {
            Console.WriteLine("我有一個夢想,那就是動身去往遠方!!");
        }
    }

三.虛方法的調用:

調用上,使用子類構造的對象調用虛方法,就會調用子類的方法,使用父類構造的對象,就會調用父類的方法;(在規(guī)則 4 中有舉例說明)
1.在基類中聲明的虛方法一般在派生類中對其進行調用,會運用到base關鍵字:
當輸入訪問修飾符和override后,系統(tǒng)會自己彈出我們剛才編寫的虛方法,直接進行選擇即可:

2.在運行時進行調用:

四.虛方法的規(guī)則:

1. 虛擬類其實指的是正常類中的虛擬方法,所以虛擬類可以直接使用實例,這是與抽象類不同的一點;
它不會像抽象類一樣進行報錯!!!

2. 虛擬方法是在方法前加virtual關鍵字,對方法進行聲明,說明這個方法為虛方法;

 class Person
    {
        public virtual void XXX()//虛方法
        {
            Console.WriteLine("我有一個夢想,那就是動身去往遠方!!");
        }
    }
     class Boy : Person//繼承person
    {
        public override void XXX()//虛方法調用
        {
            base.XXX();
        }
    }

3. 虛擬函數和正常函數無區(qū)別;
4. 子類繼承虛擬類可以實現虛擬方法也可以不實現虛擬方法;
如下代碼所示,在調用虛方法時,對虛方法進行了重寫,這樣代碼執(zhí)行下來的就是子類的方法而不是父類的虛方法:::

 class Person
    {
        public virtual void XXX()
        {
            Console.WriteLine("我有一個夢想,那就是動身去往遠方!!");
        }
     }
     class Boy : Person
    {
        public override void XXX()
        {
            Console.WriteLine("我不想繼承父類的虛方法");
        }
         public void SSS()
        {
            Console.WriteLine("不學習就不會進步,不僅不就沒有出人頭地的機會");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Person person = new Person();//實例化的虛方法類
            Boy boy = new Boy();//實例化的子類
            boy.XXX();//調用了子類的方法
            boy.SSS();
            Console.ReadLine();
        }
    }

結果如圖所示:

但是如果我們采用base關鍵字進行調用的話就會有以下的結果:

 public override void XXX()
        {
            base.XXX();
           // Console.WriteLine("我不想繼承父類的虛方法");
        }

結果如下:它調用了父類/基類的虛方法

5. 虛方法可以在不同的繼承類中有不同的實現;
我們在以上案例中繼續(xù)進行添加調用虛方法:

 class DD : Person 
    {
        public override void XXX()
        {
            base.XXX();
            Console.WriteLine("我是第一個繼承虛方法的");
        }
    }
    class SS : Person
    {
        public override void XXX()
        {
            base.XXX();
            Console.WriteLine("我是第二個繼承虛方法的");
        }
    }

當然別忘記實例化哦,我在這兒就不寫實例化的代碼了,但是千萬不能忘記哦!!??
運行結果:

五.虛方法注意事項:

  • 一定要注意,只有為虛方法時可以進行重寫,不能對非虛方法進行重寫;

  • 虛方法在形式上在方法名前加virtual修飾;
  • 虛方法一般在基類定義,在派生類中實現具體操作,派生類實現該方法時,要用override對其方法進行修飾;
  • 當用virtual修飾后,不允許再有 static、abstract 或者 override 修飾符;

六.虛方法的好處:

當在基類中進行虛方法的定義以后,在派生類中可以對其方法進行調用,而且可以通過重寫來改變其中實現的功能來實現自己的一些功能,而不是虛方法時,必須重新聲明方法然后再進行自己想要的功能進行編寫然后再進行調用,但是虛方法只需要在派生類中對其進行調用,如果想實現其他的功能可以對其進行方法等的重寫,進而實現自己想要的功能,調用基類的虛方法來執(zhí)行派生類的具體操作。而在基類調用時,并不需要知道派生類是怎么樣實現的。因為不同的派生類可能實現的方式不一樣。但調用的方式是一樣的,實現了不同的功能

七.虛方法的作用:

1.允許 子類 / 派生類 進行重寫;
2.增加代碼的可維護性,脈絡較清淅有條理;

到此這篇關于C#中虛方法virtual詳解的文章就介紹到這了,更多相關C# 虛方法virtual內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C#繪制中國象棋棋盤

    C#繪制中國象棋棋盤

    這篇文章主要為大家詳細介紹了C#繪制中國象棋棋盤,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • .NET中實現彩色光標、動畫光標及自定義光標的方法

    .NET中實現彩色光標、動畫光標及自定義光標的方法

    這篇文章主要介紹了.NET中實現彩色光標、動畫光標及自定義光標的方法,非常實用的功能,需要的朋友可以參考下
    2014-08-08
  • unity3d實現七天簽到功能

    unity3d實現七天簽到功能

    這篇文章主要為大家詳細介紹了unity3d實現七天簽到功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • C#判斷ip地址是否可以ping的通

    C#判斷ip地址是否可以ping的通

    這篇文章主要介紹了ip地址是否可以ping的通的方法,使用到了C#,需要的朋友可以參考下
    2014-06-06
  • C# 使用Microsoft Edge WebView2的相關總結

    C# 使用Microsoft Edge WebView2的相關總結

    這篇文章主要介紹了C# 使用Microsoft Edge WebView2的相關總結,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
    2021-02-02
  • 基于FineUI Grid控件添加右鍵菜單

    基于FineUI Grid控件添加右鍵菜單

    大家對于FineUI Grid控件會添加右鍵菜單嗎,下面小編就給大家詳細介紹基于FineUI Grid控件添加右鍵菜單,需要的朋友可以參考下
    2015-08-08
  • .NET(C#):Emit創(chuàng)建異常處理的方法

    .NET(C#):Emit創(chuàng)建異常處理的方法

    .NET(C#):Emit創(chuàng)建異常處理的方法,需要的朋友可以參考一下
    2013-04-04
  • LZW數據壓縮算法的原理分析

    LZW數據壓縮算法的原理分析

    我希望通過本文的介紹,能給那些目前不太了解lzw算法和該算法在gif圖像中應用,但渴望了解它的人一些啟發(fā)和幫助。拋磚引玉而已,更希望兄弟們提出寶貴的意見。
    2016-06-06
  • C#獲取計算機硬件與操作系統(tǒng)的相關信息

    C#獲取計算機硬件與操作系統(tǒng)的相關信息

    這篇文章介紹了C#獲取計算機硬件與操作系統(tǒng)相關信息的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C#條件編譯、內聯函數、CLS介紹

    C#條件編譯、內聯函數、CLS介紹

    這篇文章介紹了C#的條件編譯、內聯函數、CLS,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03

最新評論