日期:2014-05-18  浏览次数:20871 次

C# 继承问题
类A.cs
public class A
{
  protected virtual Msg()
  {
   
  }
}

public class B:A
{
  protected override Msg()
  {
  base.Msg();
  }
}


public class C:B
{
  protected [这里应该用什么关键字] Msg()
  {
  base.Msg();
  }
}


public class D
{
  public Method1()
  {
  C c=new C();
  c.Msg();
  }

}

最好不要让编译器产生警告


想要达到的效果是,在类D的Method1方法中实例化 C类的一个对象“c”,调用“c”对象的Msg();方法时
其所有基类和本身的Msg方法全部被调用。





------解决方案--------------------
override 就可以了。
------解决方案--------------------
C# code

    public class A
    {
        public virtual void Msg()
        {
            Console.WriteLine("A");
        }
    }

    public class B : A
    {
        public override void Msg()
        {
            base.Msg();
            Console.WriteLine("B");
        }
    }


    public class C : B
    {
        public override void Msg()
        {
            base.Msg();
            Console.WriteLine("C");
        }
    }


    public class D
    {
        public void Method1()
        {
            C c = new C();
            c.Msg();
        }

    }