多态
我的理解就是同一个类型的实例调用“相同”的方法,产生的结果是不同的
重载:同一作用域下方法名相同但参数列表不相同
重写:被重写的方法一定是虚方法,用virtual标识,重写加上override标识。
父类当中定义
public virtual void EatFood()
{
Console.WriteLine("Animal吃东西");
}
子类当中定义
public override void EatFood()
{
Console.WriteLine("Cat吃东西");
//base.EatFood();
}
虚方法
public virtual void EatFood()
{
Console.WriteLine("Animal吃东西");
}
注意virtual在本类中就相当于没有virtual,对子类的ovrride来说,才是虚方法。
所以这么写不能实现多态,而且会报错
public virtual void EatFood()
{
Console.WriteLine("Animal吃东西");
}
public void EatFood()
{
Console.WriteLine("Animal吃东西");
}
抽象方法:
public abstract class Biology
{
public abstract void Live();
}
public class Animal : Biology
{
public override void Live()
{
Console.WriteLine("Animal重写的抽象方法");
//throw new NotImplementedException();
}
隐藏方法
public void Sleep()
{
Console.WriteLine("Animal Sleep");
}
派生类当中
new public void Sleep()
{
Console.WriteLine("Cat Sleep");
}
注意加载父类的时候会先把父类的构造方法执行一边,然后执行子类构造方法 , 调用父类的代码块用base,调用当前类用this
引用,原blog地址:http://www.cnblogs.com/zhangkai2237/archive/2012/12/20/2826734.html