我最近读到的协方差和逆变 - 下面一点的代码示例:逆变实践 - C#
public class BaseClass{
public int x = 1;
public static void print(BaseClass objClass)
{
Console.WriteLine(objClass.GetType().Name + " " + objClass.x);
}
}
public class DerivedClass : BaseClass{
public int x = 2;
}
public class Program
{
public static void Main(string[] args)
{
BaseClass bC = new BaseClass();
DerivedClass dC = new DerivedClass();
BaseClass.print(bC); //DerivedClass 1
DerivedClass.print(bC); //DerivedClass 1
BaseClass.print(dC); //DerivedClass 1
DerivedClass.print(dC); //DerivedClass 1
}
}
我的问题是 - 什么逆变让我们在实践中?我知道我可以将DerivedClass的对象作为参数传递给BaseClass方法(其中参数是BaseClass类型),但此类操作的好处是什么?为什么当我传递DerivedClass对象时,它会在BaseClass中返回我的x值?
也许这是一个不好的例子来解释逆变的好处,那么我会感激另一个例子。
这不会在任何地方使用反转。 – Lee
哇 - 所以在互联网上有误导性的教程;)但无论如何 - 有人可以解释我为什么当我通过DerivedClass对象它返回BaseClass中x的值?如果没有改变,为什么我们能做到这一点? PS: Sinatr - 感谢那个链接 – Hadrian
你正在混淆与遗传/多态性的差异。 –