(强类型,如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
{
}