實現(xiàn)多態(tài)有三種方式:虛方法防症,抽象方法孟辑,接口。
?虛方法:子類重寫父類中的方法蔫敲,對父類中的方法進行覆蓋饲嗽。適用情況:父類中的方法對子類來說不適用,子類通過重寫該方法奈嘿,覆蓋了父類中的方法貌虾。
public class Person
{
public virtual void SayHello()
{
Console.WriteLine("Say hello!");
}
}
public? class Chinese : Person
{
public override void SayHello()
{
Console.WriteLine("中國人問好!");
}
}
抽象方法:子類重寫父類中的方法指么,父類中不對方法進行實現(xiàn)酝惧,在子類中進行實現(xiàn),父類是抽象類伯诬。適用情況:針對同一種類型抽象出來的父類晚唇,對某些行為和屬性大家都是公有的,但是這些屬性和行為實現(xiàn)方式并不一致盗似。
abstract? class Person
{
public abstract void SayHello();
}
class Chinese : Person
{
public override void SayHello()
{
Console.WriteLine("中國人問好哩陕!");
}
}
接口:實現(xiàn)接口的類,將接口中的方法實現(xiàn)赫舒。適用情況:A.當(dāng)多個類型不能抽象出合理的父類時悍及,但是又要對某些行為進行多態(tài),將公共的方法抽象到一個接口中接癌,讓不同的子類調(diào)用心赶。
public interface IFlyable//定義一個接口,實用interface 修飾缺猛,接口名以I開頭缨叫,接口中只能包括方法椭符,且方法沒有訪問修飾符,方法不實現(xiàn)耻姥。
{
void Fly();
void Jump();
}
class Student:Person,IFlyable//當(dāng)一個類繼承了父類销钝,并且實現(xiàn)了多個接口的時候,被繼承的類必須寫在繼承列表的第一個位置
{
public void Fly()
{
Console.WriteLine("I can fly");
}
}