關(guān)鍵字covariant

定義

有時候會需要這種情況:父類的某個方法定義了形參的類型,而子類想把這個方法的形參類型范圍縮小至父類定義的類型的某個子類,這種情況下,如果直接修改是無法通過編譯的,這就需要covariant關(guān)鍵字登場了。

例子

abstract class Creature{
  String name;
  Creature(this.name);
}
abstract class Animal extends Creature{
  Animal(String name) : super(name ?? "動物");

  void eat(covariant Creature target);
}
abstract class Plant extends Creature{
  Plant(String name) : super(name ?? "植物");
}
class Rabbit extends Animal{
  Rabbit(): super("兔子");
  @override
  void eat(Plant target) {
    print("$name吃掉了t${target.name}");
  }

}

上面例子中,標(biāo)記了covariant關(guān)鍵字的形參類型可以被子類收縮

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容