標籤:
(強型別,如C#,裡面能多態,弱類型,如js,裡面不能多態)
分為兩種:1.編譯多態,比如函數重載
2.運行多態,
概念:當父類引用指向子類執行個體的時候,由於子類對父類的方法進行了重寫,在調用該方法的時候表現出的不同就稱為多態。
關鍵字:virtual --虛方法
override--重寫(對父類的虛方法進行重寫)
條件:必須要有繼承,父類引用指向子類執行個體,子類必須對父類的方法進行重寫
裡氏代換原則:
如果有一個地方需要使用到父類對象,那麼你可以將一個子類對象給他。
static void Main(string[] args)
{
DongWu dw = new Cat();
Dog d = new Dog();
China c = new China();
Console.WriteLine(ChiRen(c));
Console.ReadLine();
}
public static string CeShi(DongWu d)
{
return "ok";
}
public static string ChiRen(Ren r)
{
return "人類真好吃";
}
}
//partial class Ren
//{
// private string name;
// public string Name
// {
// get { return name; }
// set { name = value; }
// }
//}
class DongWu
{
public virtual string Eat() //虛方法
{
return "該動物在吃飯";
}
}
class Dog:DongWu
{
public override string Eat() //重寫
{
return "狗正在吃骨頭";
}
}
class Cat : DongWu
{
public override string Eat()
{
return "貓正在吃魚";
}
}
class Ren
{
}
class China : Ren
{
}
物件導向:多態;