标签:ble 返回 意义 dex main函数 字段 clr gis 类的方法
原文:C#中的多态性 - zhangkai2237 - 博客园 https://www.cnblogs.com/zhangkai2237/archive/2012/12/20/2826734.html
public void Sleep()
{
Console.WriteLine("Animal睡觉");
}
public int Sleep(int time)
{
Console.WriteLine("Animal{0}点睡觉", time);
return time;
}
public virtual void EatFood()
{
Console.WriteLine("Animal吃东西");
}
public override void EatFood()
{
Console.WriteLine("Cat吃东西");
//base.EatFood();
}
| tips:经常有童鞋问重载和重写的区别,而且网络上把这两个的区别作为C#做常考的面试题之一。实际上这两个概念完全没有关系,仅仅都带有一个“重”字。他们没有在一起比较的意义,仅仅分辨它们不同的定义就好了。 |
public virtual void EatFood()
{
Console.WriteLine("Animal吃东西");
}
Animal a = new Animal();
a.EatFood();

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");
}
或者为: public new void Sleep()
{
Console.WriteLine("Cat Sleep");
}
public abstract class Biology
{
public abstract void Live();
}
public class Animal : Biology
{
public override void Live()
{
Console.WriteLine("Animal重写的Live");
//throw new NotImplementedException();
}
public void Sleep()
{
Console.WriteLine("Animal Sleep");
}
public int Sleep(int time)
{
Console.WriteLine("Animal在{0}点Sleep", time);
return time;
}
public virtual void EatFood()
{
Console.WriteLine("Animal EatFood");
}
}
public class Cat : Animal
{
public override void EatFood()
{
Console.WriteLine("Cat EatFood");
//base.EatFood();
}
new public void Sleep()
{
Console.WriteLine("Cat Sleep");
}
//public new void Sleep()
//{
// Console.WriteLine("Cat Sleep");
//}
}
public class Dog : Animal
{
public override void EatFood()
{
Console.WriteLine("Dog EatFood");
//base.EatFood();
}
}
class Program
{
static void Main(string[] args)
{
//Animal的实例
Animal a = new Animal();
//Animal的实例,引用派生类Cat对象
Animal ac = new Cat();
//Animal的实例,引用派生类Dog对象
Animal ad = new Dog();
//Cat的实例
Cat c = new Cat();
//Dog的实例
Dog d = new Dog();
//重载
a.Sleep();
a.Sleep(23);
//重写和虚方法
a.EatFood();
ac.EatFood();
ad.EatFood();
//抽象方法
a.Live();
//隐藏方法
a.Sleep();
ac.Sleep();
c.Sleep();
Console.ReadKey();
}
}
//重载
a.Sleep();
a.Sleep(23);

//重写和虚方法
a.EatFood();
ac.EatFood();
ad.EatFood();

//抽象方法
a.Live();

//隐藏方法
a.Sleep();
ac.Sleep();
c.Sleep();


//Animal的实例
Animal a = new Animal();
//Animal的实例,引用派生类Cat对象
Animal ac = new Cat();
//Animal的实例,引用派生类Dog对象
Animal ad = new Dog();
a.Sleep();
a.EatFood();
ac.EatFood();
ad.EatFood();

标签:ble 返回 意义 dex main函数 字段 clr gis 类的方法
原文地址:https://www.cnblogs.com/lzfsuifeng/p/9201720.html