c#實現多型主要有3種方法,虛方法,抽象類,介面
在父類的方法前面加關鍵字virtual, 子類重寫該方法時在方法名前面加上override關鍵字,例如下面的person類的sayhello方法
class p程式設計客棧erson
string _name;
public string name
//父類方法加virtual,子類用override重寫該方法,就實現了多型
public virtual void sayhello()
}學生類和教師都繼承於person
class student : person
public override void sayhello()
, 我是學生", this.name);
}}class teacher:person
public override void sayhello()
, 我是老師", this.name);
}}然後在main函式中使用多型
student st = new student("李雷");
teacher th = new teacher("井邊君");
person p = 程式設計客棧; //子類物件賦給父類
for(int i = 0; i < p.length; i++)
console.readkey();
本例全部**
using system;程式設計客棧
namespace 多型之虛方法
; //子類物件賦給父類
for(int i = 0; i < p.length; i++)
console.readkey();
}} class person
string _name;
public string name
//父類方法加virtual,子類用override重寫該方法,就實現了多型
public virtual void sayhello()
} class student : person
public override void sayhello()
, 我是學生", this.name);
}} class teacher:person
public o void sayhello()
, 我是老師", this.name);}}}
在類前面加關鍵字abstract,方法前面加abstract,抽象方法不能有函式體。
抽象類的特點:
(1)可以有欄位
(2)可以有非抽象方法
抽象類實現多型的**如下
using system;
using system.collections.generic;
namespace 多型之抽象類
class student : person
}class teacher : person
}class program
console.readkey();}}}
**如下
using system;
using system.collections.generic;
namespace 多型之介面
class gun : iweapon
}class sword : iweapon
}class tank : iweapon
}class program
console.readkey();}}}
介面的特點
(1)介面裡的方法不能有修飾符,預設是public
(2)介面的方法不能有函式體
(3)介面中不能包含示例字段,不能有建構函式
(4)介面裡的方法被繼承的類重寫時,不需要用override關鍵字,介面不能被例項化
(5)介面之間可以繼承,並且可以多繼承;介面不能繼承於類,但是類可以繼承於介面
(6)乙個類可以同時繼承乙個類,並實現多個介面
C 多型三種實現方式
定義 多型的定義簡單來說就是使一條語句有多種狀態。實現方式 多型的實現方式分為三塊 過載 重寫 重定義。下面我們來談一談他們各自的實現方式和實現原理。過載實現方式 過載是在同一作用域內 不管是模組內還是類內,只要是在同一作用域內 具有相同函式名,不同的形參個數或者形參型別。返回值可以相同也可以不同 ...
C 多型 以及實現多型的三種方式
實實在在說多型 c 篇 1.什麼是多型.1 2.多型帶來的好處.1 3.c 中實現多型的方式.1 4.細說用函式過載實現的多型.2 5.細說用模板函式實現的多型.3 6.小結.4 7.細說用虛函式實現的多型.4 7.1.虛函式是怎麼回事.4 7.2.向上轉型.5 7.3.為什麼要用指標或引用來實現動...
C 介面的三種實現方式
原文c 介面的三種實現方式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 4...