繼承、多型的理解 - C#
阿新 • • 發佈:2018-11-03
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條的總結參考了網名“劉二雄”的博文,在此表示感謝~)
-------------------------------------------------------------------------------------------------------------------------------------