標籤:style blog color ar 使用 sp div on log
虛方法:
1、virtual方法表示此方法可以被重寫, 也就是說這個方法具有多態.父類中的方法是通用方法,可以在子類中重寫以重新規定方法邏輯。
2、virtual方法可以直接使用,和普通方法一樣。
3、不是必須重寫的. 子類可以使用base.方法 的方式調用, 無論有沒有在子類使用override去重寫。
virtual關鍵字只是明確標示此方法可以被重寫, 其實它和一般的方法沒有什麼區別
相應的
sealed關鍵字標示此方法不可以被重寫
抽象方法:
1、抽象方法沒有提供實現部分。
2、抽象方法只能在抽象類別中聲明。
3、抽象方法是一種強制衍生類別覆蓋的方法,否則衍生類別將不能被執行個體化。
上代碼:
1 protected void Button1_Click(object sender, EventArgs e) 2 { 3 BasketBallPlayer basketplayer = new BasketBallPlayer(); 4 basketplayer.Name = "姚明"; 5 Response.Write(basketplayer.getName()); 6 Response.Write(basketplayer.getWeight()); 7 Response.Write(basketplayer.getSpecial()); 8 9 Response.Write("<br>");10 11 Player player = new BasketBallPlayer();12 player.Name = "王飛人";13 Response.Write(player.getName());14 Response.Write(player.getWeight());15 Response.Write(player.getSpecial());16 17 }18 }19 20 /// <summary>21 /// 抽象類別動物22 /// </summary>23 public abstract class Player24 {25 /// <summary>26 /// 運動員名字27 /// </summary>28 public string Name;29 /// <summary>30 /// 虛方法,擷取名字31 /// </summary>32 public virtual string getName()33 {34 return "我是運動員,我的名字叫:" + Name + "<br>";35 }36 /// <summary>37 /// 虛方法,擷取運動員體重38 /// </summary>39 public virtual string getWeight()40 {41 return "運動員體重50公斤<br>";42 }43 /// <summary>44 /// 抽象方法,擷取運動員專長45 /// </summary>46 /// <returns></returns>47 public abstract string getSpecial();48 }49 /// <summary>50 /// 運動員的衍生類別51 /// </summary>52 public class BasketBallPlayer : Player53 {54 /// <summary>55 /// 重寫虛方法override56 /// </summary>57 public override string getName()58 {59 return "我是籃球巨星:" + Name + "<br>";60 }61 /// <summary>62 /// 不用override,可以不寫new,但會引起警告錯誤,編譯時間系統會自動為它加上new關鍵字63 /// </summary>64 public new string getWeight()65 {66 return "籃球巨星體重100公斤<br>";67 }68 public override string getSpecial()69 {70 return "投籃准<br>";71 }72 }
C#虛方法和抽象方法區別