📜  Dart的方法覆盖(1)

📅  最后修改于: 2023-12-03 14:40:37.156000             🧑  作者: Mango

Dart的方法覆盖

在Dart语言中,方法覆盖是一种常用的技巧,它允许你在继承关系中重新定义一个父类的方法,并且实现自己的逻辑。这种技巧可以帮助开发者更便捷高效地编写代码,提高代码的复用性和可维护性。

基本概念

方法覆盖是指子类中定义一个和父类同名的方法。当调用该方法时,程序会优先调用子类中的方法,而不是父类的方法。通过方法覆盖,子类可以重写父类的方法实现自己的逻辑。

Dart中方法覆盖的规则如下:

  • 方法名称和参数列表必须和父类中被覆盖的方法完全一致。
  • 子类中的方法不能比父类中的方法访问性更严格,例如,如果父类中的方法是public的,那么子类中的方法也必须是public的。
示例

下面是一个使用方法覆盖的示例代码:

class Animal {
  void makeSound() {
    print('Animal makes sound.');
  }
}

class Cat extends Animal {
  @override
  void makeSound() {
    print('Cat meows.');
  }
}

void main() {
  Animal animal = new Animal();
  animal.makeSound();  // 输出: Animal makes sound.

  Cat cat = new Cat();
  cat.makeSound();     // 输出: Cat meows.
}

上面的代码中,Animal类定义了一个makeSound方法,子类Cat通过方法覆盖,重新实现了makeSound方法,并输出自己特有的声音。

总结

方法覆盖是Dart语言中常用的技巧之一,通过方法覆盖,可以更加灵活地编写代码,提高代码的复用性和可维护性。在使用方法覆盖时,需要注意方法名称和参数列表必须和父类中被覆盖的方法完全一致,同时子类中的方法不能比父类中的方法访问性更严格。