程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#的虛方法

C#的虛方法

編輯:關於C#

當類中的方法聲明前加上了virtual修飾符,我們稱之為虛方法,反之為非虛。使用了virtual修飾符後,不允許再有static,abstract,或override修飾符。

對於非虛的方法,無論被其所在類的實例調用,還是被這個類的派生類的實例調用,方法的執行方式不變。而對於虛方法,它的執行方式可以被派生類改變,這種改變是通過方法的重載來實現的。

下面的例子說明了虛方法與非虛方法的區別。

程序清單14-3:

using System;
class A
{
 public void F(){Console.WriteLine("A.F");}
 public virtual void G(){Console.WriteLine("A.G");
}
Class B:A
{
 new public void F(){Console.WriteLine("B.F");}
 public override void G(){Console.WriteLine("B.g");}
 }
class Tese
{
 static void Main(){
    B b=new B();
    A a=b;
    a.F();
    b.F();
    a.G();
    b.G();
 }
}

例子中,A類提供了兩個方法:非虛的F和虛方法G.類B則提供了一個新的非虛的方法F,從而覆蓋了繼承的F;類B同時還重載了繼承的方法G.那麼輸出應該是:

A.F
B.F
B.G
B.G

注意到本例中,方法a.G()實際調用了B.G,而不是A.G.這是因為編譯時值為A,但運行時值為B,所以B完成了對方法的實際調用.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved