我最近讀到的協方差和逆變 - 下面一點的代碼示例:逆變實踐 - 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
你正在混淆與遺傳/多態性的差異。 –