在每一个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();
运行作如下程序,你就知道答案了。
A a1 = new A1();
A a2 = new A2();
A1 a11 = (A1)a1;
A2 a22 = (A2)a2;
a1.fun();
a2.fun();a11.fun();
a22.fun();
什么情况下该override?举例说明啊!
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