我正在瀏覽 dart 檔案,在那里我遇到了這個代碼和這個術語
covariant。我瀏覽了一些檔案,但我沒有得到它的內容function。始終感謝詳細解釋的答案。
class Animal {
void chase(Animal x) { ... }
}
class Mouse extends Animal { ... }
class Cat extends Animal {
@override
void chase(covariant Mouse x) { ... }
}
uj5u.com熱心網友回復:
只需嘗試洗掉關鍵字協變,它就會變得不言自明。
您將收到一個編譯器錯誤,說明您正在覆寫引數型別不匹配的方法Expected: Animal, Actual: Mouse
但是,Mouse 是 Animal 的子型別,所以如果你想允許這種情況不出錯,請添加 covariant 關鍵字
前

后

在這里你可以看到老鼠是動物的亞型
uj5u.com熱心網友回復:
通過使用 covariant 關鍵字,您禁用型別檢查并負責確保您在實踐中不違反合同。
正如您在示例中看到的,如果您要覆寫一個方法,它的引數也應該是相同的。但是如果您使用協變,它將允許您使用滑鼠而不是動物。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/431661.html
上一篇:如何讓顫振類方法回傳未來?
