publicclass MyBase ...{ publicvirtualstring Meth1() ...{ return"MyBase-Meth1"; } publicvirtualstring Meth2() ...{ return"MyBase-Meth2"; } publicvirtualstring Meth3() ...{ return"MyBase-Meth3"; } } class MyDerived : MyBase ...{ // Overrides the virtual method Meth1 using the override keyword: publicoverridestring Meth1() ...{ return"MyDerived-Meth1"; } // Explicitly hide the virtual method Meth2 using the new // keyword: publicnewstring Meth2() ...{ return"MyDerived-Meth2"; } // Because no keyword is specified in the following declaration // a warning will be issued to alert the programmer that // the method hides the inherited member MyBase.Meth3(): publicstring Meth3() ...{ return"MyDerived-Meth3"; } publicstaticvoid Main() ...{ MyDerived mD =new MyDerived(); MyBase mB = (MyBase) mD; System.Console.WriteLine(mB.Meth1()); System.Console.WriteLine(mB.Meth2()); System.Console.WriteLine(mB.Meth3()); } }