a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

深入理解C# abstract和virtual關鍵字

2020-01-24 03:43:17
字體:
來源:轉載
供稿:網友
復制代碼 代碼如下:

class A
{
public virtual void Func() // 注意virtual,表明這是一個虛擬函數
{
Console.WriteLine("Func In A");
}
}
class B : A // 注意B是從A類繼承,所以A是父類,B是子類
{
public override void Func() // 注意override ,表明重新實現了虛函數
{
Console.WriteLine("Func In B");
}
}
class C : B // 注意C是從B類繼承,所以B是父類,C是子類
{
}
class D : A // 注意D是從A類繼承,所以A是父類,D是子類
{
public new void Func() // 注意new ,表明覆蓋父類里的同名類,而不是重新實現
{
Console.WriteLine("Func In D");
}
}
class Program
{
static void Main(string[] args)
{
A a; // 定義一個a這個A類的對象.這個A就是a的申明類
A b; // 定義一個b這個A類的對象.這個A就是b的申明類
A c; // 定義一個c這個A類的對象.這個A就是c的申明類
A d; // 定義一個d這個A類的對象.這個A就是d的申明類
a = new A(); // 實例化a對象,A是a的實例類
b = new B(); // 實例化b對象,B是b的實例類
c = new C(); // 實例化c對象,C是c的實例類
d = new D(); // 實例化d對象,D是d的實例類
a.Func(); // 執行a.Func:1.先檢查申明類A 2.檢查到是虛擬方法 3.轉去檢查實例類A,就為本身 4.執行實例類A中的方法 5.輸出結果 Func In A
b.Func(); // 執行b.Func:1.先檢查申明類A 2.檢查到是虛擬方法 3.轉去檢查實例類B,有重載的 4.執行實例類B中的方法 5.輸出結果 Func In B
c.Func(); // 執行c.Func:1.先檢查申明類A 2.檢查到是虛擬方法 3.轉去檢查實例類C,無重載的 4.轉去檢查類C的父類B,有重載的 5.執行父類B中的Func方法 5.輸出結果 Func In B
d.Func(); // 執行d.Func:1.先檢查申明類A 2.檢查到是虛擬方法 3.轉去檢查實例類D,無重載的(這個地方要注意了,雖然D里有實現Func(),但沒有使用override關鍵字,所以不會被認為是重載) 4.轉去檢查類D的父類A,就為本身 5.執行父類A中的Func方法 5.輸出結果 Func In A
D d1 = new D();
d1.Func(); // 執行D類里的Func(),輸出結果 Func In D
Console.ReadLine();
}
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲成人av在线播放 | 日本黄色片在线观看 | 亚洲成人av在线播放 | av免费网站 | 亚洲一区二区三区四区在线观看 | 久久久99精品免费观看 | 久久久久久久久久久国产精品 | 中文字幕在线官网 | 国产一区二区精品 | 国产精品v欧美精品v日韩 | 亚洲欧美视频 | 欧美久久一级特黄毛片 | 一区二区三区观看视频 | 国产免费拔擦拔擦8x高清 | 一区二区三区日韩在线 | 国产高清一级 | 国产精品欧美久久久久一区二区 | 国产精品久久精品 | 亚洲精品一区二三区不卡 | 激情久久av一区av二区av三区 | 欧美在线观看黄 | 精品国产视频 | 成人在线视频播放 | 久久之久久 | 国产成人在线播放 | 免费国产视频 | 久草天堂 | 草逼操| 精品亚洲一区二区三区在线观看 | 成人免费视频毛片 | 亚洲精品久久久久久久久 | 国产精品欧美一区二区三区 | 中文字幕成人免费视频 | 人人干人人干人人 | 国产精品中文字母 | 九九综合九九 | 色噜噜在线观看 | 久免费视频 | 国产精品久久久久久久久 | 国产视频一区在线 | 久久久久香蕉视频 |