協變逆變和向上轉型向下轉型閒談

2021-08-10 23:02:40 字數 369 閱讀 6976

關於協變和逆變要從物件導向繼承說起。繼承關係是指子類和父類之間的關係;子類從父類繼承所以子類的例項也就是父類的例項。比如說animal是父類,dog是從animal繼承的子類;如果乙個物件的型別是dog,那麼他必然是animal。

協變逆變正是利用繼承關係 對不同引數型別或返回值型別 的委託或者泛型介面之間做轉變。

如果乙個方法要接受dog引數,那麼另乙個接受animal引數的方法肯定也可以接受這個方法的引數,這是animal向dog方向的轉變是逆變。如果乙個方法要求的返回值是animal,那麼返回dog的方法肯定是可以滿足其返回值要求的,這是dog向animal方向的轉變是協變。

此文未完......

1:協變 逆變

向上轉型和向下轉型

向上轉型 子類向上轉型為父類 注意點 轉型後父類與子類的同名函式中,子類的函式可以覆蓋父類的函式,但子類自己定義的函式將被隱藏 class a public void a2 class b extends a public void b2 public class c 向下轉型 父類被強制轉型為子類...

向上轉型和向下轉型

例如我現在有兩個類,他們之間是繼承的關係 class animal class dog extends animal void bark 通俗地講,向上轉型就是把子類的物件轉化為父類的物件,如 animal animal new dog 但是注意,向上轉型後,父類只能訪問與子類共有的方法,如以下 就...

向上轉型和向下轉型

在j a中,繼承是乙個重要的特徵,通過extends關鍵字,子類可以復用父類的功能,如果父類不能滿足當前子類的需求,則子類可以重寫父類中的方法來加以擴充套件。而在應用中就存在著兩種轉型方式。比如有父類parent,子類child1.向上轉型 父類的引用指向子類的例項parent p new chil...