首页 新闻 搜索 专区 学院

关于多态的小疑问

0
悬赏园豆:5 [已解决问题] 解决于 2012-03-10 21:06

学习多态时看到如下一个例子:

public class Animal
    {
public virtual void Eat()
{
            Console.WriteLine(
"Animal eat");
        }
    }

   
public class Cat : Animal
    {
       
public new void Eat()
        {
            Console.WriteLine(
"Cat eat");
        }
    }

   
class Tester
    {
       
static void Main(string[] args)
        {
            Animal a
= new Animal();
            a.Eat();

            Animal ac
= new Cat();
            ac.Eat();

            Cat c
= new Cat();
            c.Eat();
        }
    }

问题是:最后三个实例化的语句怎样理解啊?(说详细点啊)

程序运行结果为:

Animal eat...

Animal eat...

Cat eat...  为什么啊?

巴维尔的主页 巴维尔 | 初学一级 | 园豆:61
提问于:2011-07-26 10:10
< >
分享
最佳答案
0

第一行和第三行不用解释:
第二行是因为Cat类并没有override Animal的Eat方法, 是new运算符,如果是Override的话,就是Cat eat。
你可以认为new 修饰的那个方法仅仅只是名字相同而已(通过反射,你可以发现Cat类有两个Eat方法)。

收获园豆:5
Jeremy Liu | 小虾三级 |园豆:705 | 2011-07-26 11:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册