public class A
{
        public void SayHello()
        {
          Console.WriteLine("A"); 
          
        }
}
public class B:A
{
        public void SayHello()
        {
          Console.WriteLine("B"); 
          
        }
}public static void main()
{
       A a=new B();
       a.SayHello();//输出A}上面的结果我知道,但不知道为什么会输入A,表达不清,

解决方案 »

  1.   

    写了virtual或abstract的就是虚函数或纯虚函数。没写的就是成员函数,成员函数只是在代码段的一段代码,与类型有关。虚函数是在类中保存一个函数指针,根据实际创建的类对象有关。你这里是成员函数,B中你省略了new,应当写public new void SayHello()
      

  2.   


    不写new 运行也没错。
    这虚函数和抽象函数没多大关系吧
      

  3.   

    你仔细看我的回复吧。
    1.是没错,你仔细看看我写的。你省略了new,不代表你这么写就是对的,这样编译器替你写了而已。你编译又个警告吧。
    2.懒得重复,仔细看看。
      

  4.   

    父类中 不是 虚方法,子类中没有对父类的方法进行override 2个类中 都是普通方法...
      

  5.   

    楼主仔细理解下这句代码:
     A a=new B();
    还有成员函数只是在代码段的一段代码,与类型有关。虚函数是在类中保存一个函数指针,根据实际创建的类对象有关。你这里是成员函数,B中你省略了new,应当写public new void SayHello()。