class Program
{
//任何类型都可以安全的转换为其基类类型,可以由隐式转换来完成
static void Main(string[] args)
{
Number num = new Number();
num.ShowNumber();
IntNumber intNum = new IntNumber();
intNum.ShowNumber();
//若IntNumber重写了Number类中的方法 自 number变量中所有的的调用都是基于IntNumber的,否则对没有override的方法则执行Number类中的方法
Number number = new IntNumber();
//究竟调用了谁?
number.ShowInfo();
//究竟调用了谁?
number.ShowNumber();
Console.ReadLine();
}
class Number
{
public static int i = 123;
public virtual void ShowInfo()
{
Console.WriteLine("base class---");
}
public virtual void ShowNumber()
{
Console.WriteLine(i.ToString());
}
}
class IntNumber : Number
{
new public static int i = 456;
public override void ShowInfo()
{
Console.WriteLine("Derived class---");
}
public override void ShowNumber()
{
Console.WriteLine("Base number is {0}", Number.i.ToString()); Console.WriteLine("New number is {0}", i.ToString());
}
}
}