解决方案 »

  1.   

    输出为:
    ConsoleApplication4.cow      no name
    ConsoleApplication4.cow      no name
    ConsoleApplication4.animal      no name
    不好意思,说错了
      

  2.   

    对不起,语言表达欠佳,我想问的是,animal animal1 = cow1;所以animal1.getname()调用的应该是aniaml这一基类的方法,还是cow的方法。
      

  3.   

    不对呀,你这句animal animal1 = cow1好像是把cow1赋值给前面的了
      

  4.   

    如果你不写virtual,永远不可能改变基类中定义的方法。
      

  5.   

    嗯,cow是animal的子类。这样输出调用的不应该是cow的getname么?
      

  6.   

    好吧,我不想多说什么了
    根据你的基础,可以先读一下
    《你必须知道的.net》ps:别说我又让你读书,不直接告诉你答案,既然是《你必须知道.net》,那么全书9成地内容也的却就是你应该知道的,而且你的问题这书上也起码有3个章节有互为补充的说明《对象创建始末》《继承本质》《重载与覆写》http://www.cnblogs.com/anytao/archive/2007/09/14/must_net_catalog.html
      

  7.   

    animal中:
    public virtual string getname()
            {
                return name;
            }
    cow中:
     public string getname()
            {
                return name;
            }
    哪里不对呢?
      

  8.   

    animal中:
    public virtual string getname()
            {
                return name;
            }
    cow中:
     public override string getname()
            {
                return name;
            }
    看看你的cow中是不是有警告提醒你重写要添加override
      

  9.   

    嗯,加了确实就可以了!是重写一定要加override么?