多型實現共有三種途徑,分別是:虛方法、抽象類、介面,本篇講述第一種方法:虛方法。
1. 什麼是虛方法?虛方法,從語法上來說是被virtual關鍵字修飾的方法,從含義上講,這個方法在類被繼承後可以在子類重寫(override)。
2. 在子類中重寫虛方法需要注意哪些問題?首先說明的是,子類中的重寫並不是必須的,因為父類中的虛方法本身也是有函式體的(除非是抽象方法),所以如果進行重寫則會覆蓋從父類中的虛方法,否則直接呼叫父類的該方法。
3. 是怎樣
體現多型的?在呼叫的時候子類只需要呼叫同乙個方法,如果進行重寫則會表現出不同的效果,這就體現出了「多型」,即是同一種寫法不同的表現形態,「於同中求不同」。
4.**示例:
1類定義using
system;
2using
system.collections.generic;
3using
system.linq;
4using
system.text;56
namespace
_02用虛方法實現多型714
public
string
name
1519
//虛方法,可在子類中重寫
20public
virtual
void
show()
2124}25
///26
///中國人類
27///
28public
class
chinese : person
2935
//重寫show()方法
36//
可用sealed關鍵字修飾show(),檢視beijingren類中不可再重寫show()方法
37public
override
void
show()
38,我是中國人
", name);40}
41public
void
sayhello()
4245}46
///47
///日本人類
48///
49public
class
janpanese : person
5056
public
override
void
show()
57,我是日本人。
", name);59}
60}61///
62///
美國人類
63///
64public
class
american : person
6571
//不進行重寫的話,在使用american物件呼叫show()方法時會直接呼叫父類person中的方法。
72//
public override void show()
73//
,我是美國人。", name);
75//}76
}77public
class
beijingren : chinese
7883
public
override
void
show()
8487
}88 }
1主函式using
system;
2using
system.collections.generic;
3using
system.linq;
4using
system.text;56
namespace
_02用虛方法實現多型
7;//
建立父型別的陣列
17//
遍歷整個陣列,並使用is判斷是否屬於某種型別
18for (int i = 0; i < pn.length; i++)
1923
24//
事實證明,多型只適用於子類共有的某些屬性或方法,不適用於個性東西。
25//
person p1 = new chinese("sk");
26//
p1.sayhello();
27 console.writeline("ok"
);28
console.readkey();
2930}31
}32 }
C 多型實現之虛方法
控制台應用程式中,新建乙個people類檔案,如下 using system using system.collections.generic using system.linq using system.text namespace 13多型 public string name 1.第一,將父類...
虛方法實現多型
大家都知道物件導向的三大特徵,封裝 繼承 多型,這裡解釋一下多型 同一操作作用於不同的物件,可以有不同的解釋,產生不同的執行結果,這就是多型性。換句話說,實際上就是同乙個型別的例項呼叫 相同 的方法,產生的結果是不同的。這裡的 相同 打上雙引號是因為這裡的相同的方法僅僅是看上去相同的方法,實際上它們...
多型之虛方法
1.虛方法用到兩個關鍵字 virtual 和 override 當子類繼承與父類物件時,宣告乙個父類物件,通過在子類中重寫父類物件的方法,可以直接調到子類的方法 public class person set public person string name public virtual void...