class Program
    {
        public interface BaseInterface
        {
            void Test();
        }
        public class MyClass1 : BaseInterface
        {
            public void Test()
            {
                Console.WriteLine("in MyClass1;");
            }
        }
        public class MyClass2 : MyClass1
        {
            public new void Test()
            {
                Console.WriteLine("in MyClass2;");
            }
        }
        static void Main(string[] args)
        {
            BaseInterface x = new MyClass1();
            x.Test();
            x = new MyClass2();
            x.Test();        }
    }结果为啥是:
in MyClass1;
in MyClass1;
而不是
in MyClass1;
in MyClass2;

解决方案 »

  1.   

    Test用虚方法就可以了
    new出来的方法只是MyClass2的成员,而不是BaseInterface的实现
      

  2.   

    晕,我也不懂.
    BaseInterface   x=  new   MyClass2(); //能讲清楚点吗?
      

  3.   

    不使用new 的时候结果也一样!为啥啊!class   Program
            {
                    public   interface   BaseInterface
                    {
                            void   Test();
                    }
                    public   class   MyClass1   :   BaseInterface
                    {
                            public   void   Test()
                            {
                                    Console.WriteLine("in   MyClass1;");
                            }
                    }
                    public   class   MyClass2   :   MyClass1
                    {
                            public   void   Test()
                            {
                                    Console.WriteLine("in   MyClass2;");
                            }
                    }
                    static   void   Main(string[]   args)
                    {
                            BaseInterface   x   =   new   MyClass1();
                            x.Test();
                            x   =   new   MyClass2();
                            x.Test();                }
            }结果为啥是:
    in   MyClass1;
    in   MyClass1;
    而不是
    in   MyClass1;
    in   MyClass2;
      

  4.   

    使不使用new都一个意思。
    区别就是 使用new是 “显示的” 隐藏从基类继承的成员,