C#中Virtual與override分別有什么用途


using   System;
class   A
{
    public   A()
    {
        PrintFields();
    }

    public   virtual   void   PrintFields()
    {}
}

class   B:A
{
    int   x=1;
    int   y;
    public   B()
    {
        y=-1;
    }

    public   override   void   PrintFields()  
    {
        Console.WriteLine( "x={0},y={1} ",x,y);
    }
}

當使用new   B()創建B的實例時,產生什么輸出?

--------------------------------------------
=========================================
x   =1   y   =0

new   B()后首先執行
int   x=1;
int   y;
再執行B的構造函數時會調用基類構造函數先   於是執行
public   A()
    {
        PrintFields();
    }

而A中的PrintFields方法是virtual方法且B中已經用override關鍵字實現了該方法  
於是會執行子類B中的PrintFields方法   Console.WriteLine( "x={0},y={1} ",x,y);  
//注意此時還沒有執行到B的構造函數   所以   y值為0

而后才執行到B的構造函數//此時   x=1   y   =-1;

virtual修飾的方法為虛方法,暗示其子類最好有自己的實現

override修飾的方法為重寫方法,表示覆蓋了基類原有方法的實現
virtual修飾的方法

其子類除了override   還可用new來修飾


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM