public class A
    {
        public virtual string Foo ()
        {
            return "A";
        }
    }    public class B : A
    {
        public override string Foo()
        {
            return "B";
        }
    }    public class C : B
    {
        public override string Foo()
        {
            return "C";
        }        public string Test()
        {
            return base.Foo(); //这句话是调用父类。如何改为调用父类的父类
        }
    }调用代码:
            C obj = new C();
          string s=  obj.Test(); //此处返回"B",目标是想让其返回"A"。

解决方案 »

  1.   

    阁下的理解可真高深,多态是干这个的吗?多态是呈现子类的不同状态的。
    你想实现基类的,直接继承就可以 public class A
        {
            public  string Foo()
            {
                return "A";
            }
        }    public class B : A
        {
            
        }    public class C : B
        {
            public string Test()
            {
                return base.Foo(); //这句话是调用父类。如何改为调用父类的父类
            }
        }
      

  2.   


    class A
    {
     public virtual void Func()
     {
      Console.WriteLine("A");
     }
    }
    class B:A
    {
     public new void Func()
     {
      Console.WriteLine("B");
     }
    }
    class C:B
    {
     public void Func()
     {
      A a = this as C;
      a.Func();    
     }
    }
      

  3.   

    public string Test()
    {
      ((A)this).Foo(); 
    }
      

  4.   


    这个会返回C类的Foo: “C"
      

  5.   


    这个应该是网上抄的。B类把virtual改成new,那就失去多态的一些重要特性了。
      

  6.   


    那你觉得多态不是这么用,又是怎么用的?
    TextBox继续于TextBoxBase,TextBoxBase又继续于Control。这不就是这个道理吗。比如想定义一个类直接继承于TextBox,那自然是打算用TextBox现有的一些方法属性等(但某些特殊时候又不得不调用Control类的方法,比如BackColor),如果直接继承自Control,那就失去意义了。
      

  7.   

    给你个例子,让你知道这是不可能的:
    public class A
    {
        protect virtual bool Test()
        {
            return true;
        }
    }public class B : A
    {
        protect override bool Test()
        {
            return false;
        }
    }public class C : B
    {
        public bool GetResult()
        {
            return Test();
        }
    }B直接返回false
    让你接触不到A
    你怎么可能从A那里拿到true呢?