码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象:多态;

时间:2016-09-06 12:17:55      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:

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

面向对象:多态;

标签:

原文地址:http://www.cnblogs.com/nbsp12138/p/5844988.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!