假设我有两个类如下:
class Fruit
{
public string color { get; set; }
}
class Orange : Fruit
{
public double diameter { get; set; }
}
然后在水果变量中创建一个橙色对象
Fruit fruit = new Orange() { color = "Orange", diameter = 10.0 };
// This line prints 10 even though the Fruit class doesn't contain a
// diameter property
Console.WriteLine( ( (Orange) fruit ).diameter );
为什么整个橙子,包括直径属性,都可以挤进水果变量?为什么 Fruit 变量不受 Fruit 类定义的限制?
如果我将新的 Orange 放在 Orange 变量中,会有什么区别,就像在这个例子中一样?
Orange fruit = new Orange() { color = "Orange", diameter = 10.0 };
我能找到的唯一区别是我是否对变量进行类型测试,并且在使用对象之前我不需要强制转换。但肯定不止于此,对吧?