在每一个fun函数打印一个不同的string出来。
运行作如下程序,你就知道答案了。
A a1 = new A1();
A a2 = new A2();
A1 a11 = (A1)a1;
A2 a22 = (A2)a2;
a1.fun();
a2.fun();a11.fun();
a22.fun();

解决方案 »

  1.   

    什么情况下该NEW?
    什么情况下该override?举例说明啊!
      

  2.   

    1. New 
    New 就是为了抹掉父类的方法和属性. 比如父类的某一个public的方法你不想让他在子类中起作用或者是起其他的作用.
    using System;namespace MyName
    { class Useit
    {
     
    public static void Main()
    {
    A1 a1 = new A1(); a1.Fun(); Console.ReadLine();
    }
    } public class A
    {
    public  void Fun()
    {
    Console.WriteLine("Fun A");
    }
    } public class A1:A
    {
    public new void Fun()
    {
    Console.WriteLine("Fun A1");
    }
    }2.override是重写,父类对应的父方法必须是虚拟的、抽象的或重写的。
    参考:
    using System;namespace MyName
    { class Useit
    {
     
    public static void Main()
    {
    A2 a2 = new A2(); a2.Fun(); Console.ReadLine();
    }
    } public class A
    {
    public virtual void Fun()
    {
    Console.WriteLine("Fun A");
    }
    } public class A2:A
    {
    public override void Fun()
    {
    Console.WriteLine("Fun A2");
    }
    }
    }请同时参考MSDN:
    new
    ms-help://MS.VSCC/MS.MSDNVS.2052/csref/html/vclrfNewOpPG.htm#vclrfnew_newmodifier
    overide
    ms-help://MS.VSCC/MS.MSDNVS.2052/csref/html/vclrfOverridePG.htm