在父类和子类里面我写同样名字的函数,方法前面不加任何修饰符,跟父类方法前用virtual,子类方法前面加override是一样的吗?

解决方案 »

  1.   

    不一样。
    看看override的说明就知道了。
      

  2.   

    不一样当基类不包含具有相同签名的成员时,必须将 override 修饰符用于方法。同样名字的好像没啥区别
      

  3.   

    就是写了代码,都编译过了,运行也结果也一样^_^
    public class root
    {
    public root()
    {
    //
    // TODO: Add constructor logic here
    //
    }
    public void tell()
    {
    System.Windows.Forms.MessageBox.Show("root");
    }
    }
             ------------------------
    public class branch:root
    {
    public branch()
    {
    //
    // TODO: Add constructor logic here
    //
    }
    public  void tell()
    {
    System.Windows.Forms.MessageBox.Show("xx");
    }
    }
    --- winform ------------
            private void Form1_Load(object sender, System.EventArgs e)
    { branch objBrh = new branch();
    objBrh.tell();
    }
    成对加上virtual,override也是一样
      

  4.   

    To  Mittermeyer(疾风之狼):能说下有什么不同吗?
      

  5.   

    呵呵~ 这样写就以看root 的tell()被override了,之前在branch的tell()里面用base指针,结果还是输出"root",觉得奇怪,看来是理解有误~
    branch objBrh = new branch();
    objBrh.tell();

    root r = objBrh;
    r.tell();
      

  6.   

    root objBrh = new branch();
    看看这个时候有什么不同就知道了。
      

  7.   

    不一样,会出现警告。子类方法要加new修饰。