using System;
using System.Collections.Generic;
using System.Text;namespace ConsoleApplication2
{
public class baseclass
{
public baseclass()
{
Console.WriteLine("In baseclass.constructor");
}
public virtual void Method() //使用virtual才可以在子类中使用override,而new不必要
{
Console.WriteLine("In baseclass.method()");
}
}
public class deriveclassA : baseclass
{
public deriveclassA()
{
Console.WriteLine("In deriveclassA.constructor");
}
public override void Method() //重载基类的方法
{
// base.Method();
Console.WriteLine("In deriveclassA.method() use override");
}
}
public class deriveclassB : baseclass
{
public deriveclassB()
{
Console.WriteLine("In deriveclassB.constructor");
}
public new void Method()
{
Console.WriteLine("In deriveclassB.Method()");
base.Method();
}
}
class Program
{
static void Main(string[] args)
{
baseclass P1 = (baseclass) new deriveclassA();
P1.Method();
baseclass P2 = (baseclass) new deriveclassB();
P2.Method();
deriveclassA D1 = new deriveclassA();
D1.Method();
deriveclassB D2 = new deriveclassB();
D2.Method();
}
}
}后面的程序入口那看不懂怎么运行的,求详细解释
deriveclassA的方法;
P2是baseclass类型的 但是在deriveclassB分配内存 deriveclassB new了基类的虚方法即隐藏了基类的同名方法 因此调用基类的方法
d1,d2都是子类类型则调用自己类的相应方法