【发布时间】:2012-02-01 15:04:24
【问题描述】:
我现在正在研究继承和多态性,我遇到了编译器将评估(使用反射?)什么类型的对象存储在基本类型引用中以决定运行什么方法的概念使用覆盖调用方法。
例如:
class Shape
{
public virtual void Draw()
{
Console.WriteLine("Drawing shape...");
}
}
class Circle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing circle...");
}
}
static void Main()
{
Shape theShape = new Circle();
theShape.Draw();
}
将输出以下内容:
Drawing circle...
我一直认为,声明任何类型的对象都是为该特定类型的对象指定内存的一种方式。所以Int32 i = 2l; 意味着我现在将内存作为整数的一种“占位符”放在一边。但在上面的代码中,我为 Shape 预留了内存,但它实际上可以引用/存储 Circle 类型的对象!?
【问题讨论】:
标签: c# oop inheritance polymorphism