我似乎无法找到这个继承问题的满意答案.为什么有时会声明这样的子类型:
Shape myCircle = new Circle();
还有其他时间?
Circle myShape = new Circle();
当圆是一个孩子/子类的Shape.....
在我阅读的OO书籍中似乎没有一致性,并且我可以解释一下我的解释.人们已经向我展示了一个Shapes类的例子被实例化为圆形,正方形等......但是我不明白你何时使用第一个声明和第二个声明.
也许您有一个形状列表,并且您并不特别关心它们是什么类型的形状,因为您需要对该列表执行的操作对于所有形状都是通用的(即绘制),您可能希望将它们添加到列表中,例如这
List<Shape> shapeList = new List<Shape>();
shapeList.Add(new Circle());
shapeList.Add(new Rectangle());
foreach (Shape shape in shapeList)
{
    shape.Draw();
}
通过这种方式,您可以访问实际上是不同类型但共享公共父对象的对象上形状的通用方法。然后,如果您想做一些特定于圆圈的事情,您可以使用像这样的相同列表。
foreach (Shape shape in shapeList)
{
    if (!(shape is Circle)) continue;
    Circle circle = shape as Circle;
    circle.Radius = 100;
}