1. 程式人生 > >繼承、多型的理解 - C#

繼承、多型的理解 - C#

11月3日 陰天

 前兩天看某位大牛寫的程式,對於C#多型有困惑,今天一大早來查閱了不少資料,自認為有了一個基本的認知,記錄下來,一掃今天這陰霾的天氣

----------------------------------------------------------------- 我是華麗的分割線 ------------------------------------------------------

1、類的建立:

  • 首先用abstract建立抽象父類,在父類鍾新增virtual虛方法
  • 建立子類繼承父類,子類中用override重寫父類鐘的方法
  • 宣告一個父類,例項化的時候分別用子類例項化,實現多型
  • 實現多型就是在父類的基礎上宣告多個子類,多個子類對父類分別有不同的方法來實現

2、上程式碼:

 1     //子類3
 2     public class Japanese : Person
 3     {
 4         public override string CallName(string name)
 5         {
 6             return "我是日本人,我的名字叫:" + name;
 7  } 8  } 9 //子類2 10 public class Korea : Person 11  { 12 public override string CallName(string name) 13  { 14 return "我是朝鮮人,我的名字叫:" + name; 15  } 16  } 17 //子類1 18 public class Chinese : Person 19  { 20 public override string CallName(string name) 21  { 22 return "我是中國人,我的名字叫:" + name; 23  } 24  } 25 //父類 26 public abstract class Person 27  { 28 public virtual string CallName(string str) { return str; } 29  }
1 private void button1_Click(object sender, EventArgs e)
2 {
3     Person[] person = {new Chinese(),new Korea(),new Japanese()};
4     foreach (Person p in person)
5     {
6         MessageBox.Show(p.CallName("張三")); 7  } 8 }

 3、繼承與多型的理解:

  • 一個類用abstract關鍵字修飾那這個類就是抽象類
  • 抽象類不能被例項化
  • 抽象方法不能有方法體,連{ }都不能有
  • 抽象方法只能存在於抽象類中,但是抽象類中可以有非抽象方法
  • 抽象類不能是靜態類、密封類
  • 抽象類中的所有方法必須被子類重寫,除非子類也是抽象類
  • 抽象方法存在的目的:為了約束類中方法存在的形式(引數列表、return型別)
  • base關鍵字可以用來訪問當前物件的基類物件

     (PS:第3條的總結參考了網名“劉二雄”的博文,在此表示感謝~)

 -------------------------------------------------------------------------------------------------------------------------------------