public class B:A
{
public override void x() //提供x的实现
{
}
}

解决方案 »

  1.   

    public class A
    {
    public virtual void x()
    {

    }
    public void y()
    {
    x();
    }}public class B:A
    {
    public override void x() //提供x的实现
    {
    }
    }或者public class A
    {
    public void x()
    {
    }
    public void y()
    {
    x();
    }}public class B:A
    {
    public new void x() //提供x的实现
    {
    } public new void y()
    {
    base.y();
    x();
    }}
      

  2.   

    这样也可以,哈哈using System;public class class1
    {
    public static void Main()
    {
    B b=new B();
    b.y(); A b2=new B();
    b2.y(); A b3=new A();
    b3.y(); Console.ReadLine();
    }

    }
    public class A
    {
    public  void x()
    {
    Console.WriteLine("执行A:x");
    }
    public void y()
    {

    B b=this as B;
    if(b==null)
    x();
    else
    b.x(); }}public class B:A
    {
    public void x() //提供x的实现
    {
    Console.WriteLine("执行B:x");
    }
    }
      

  3.   

    A:
    public virtual void x()
    {

    }B:
    public override void x()
    {
    //base.x() 如果需要执行 a.x 就加这个
    }哥们java 转过来的吧,c# 不是全部函数默认都可以重写的
      

  4.   

    to  weimu399(玮睦)   public void y()
    {

    B b=this as B;
    if(b==null)
    x();
    else
    b.x(); }虽然是开个玩笑(其实跟虚函数的作用是一样的),但是上面这个代码测试过可用,不知道你理解了我是什么意思没?
      

  5.   

    gaobud(真是搞不懂) ,你的方法是没错,但没有意义。派生的目的就是不仅派生出B、还有C、D等等,就是预留一个x(),让派生类自由发挥。如果预先知道有B而且是唯一的B,还这么干,就是多此一举了。
      

  6.   

    public class A
    {
    public virtual void x()
    {
    }
    public void y()
    {
    ... x(); ...
    }}public class B:A
    {
    public override void x() //提供x的实现
    {
    }
    }
      

  7.   

    或者是:
    public abstract  class A
    {
    public abstract void x()
    {
    }
    public void y()
    {
    ... x(); ...
    }}public class B:A
    {
    public override void x() //提供x的实现
    {
    }
    }
      

  8.   

    qcny,你跟踪一下就知道,这方法,B里的x()不会被A里的y()调用的,它只调用A里的x()
      

  9.   

    没有叫你用最后一种方法,我只是写那个例子来解释一下虚函数的意思,所以我说是一个玩笑没有意义如果引用是基类A,创建的实例也是基类A,那么就不可能调用派生类里的实例方法x()--因为他不存在,除非x()是派生类的一个静态函数如果引用是基类A,创建的实例是派生类B,那么只要x()是一个虚函数-->基类A里的y()就会自已决定应当调用哪个x(),也就是基类A里的y()调用派生类里的x()在函数前面加上虚函数的关键字就可以,不必搞的那么复杂
      

  10.   

    gaobud(真是搞不懂) 
     你所说的应该就是像qcny那样写。但是好像只有这样使用
    B b=new B();
    b.y();
    这时候调用了调用派生类里的x()我的代码A里面y()是响应某事件的代码,它就直接调用了基类的x(),没法让它调用派生类里的x();要实现这样的功能是否要用到接口才能实现吗?