示例

class Animal {
  void makeSound() {
    print('Animal makes a sound');
  }
}
 
class Dog extends Animal {
  @override
  void makeSound() {
    print('Dog barks');
  }
}
 
class Cat extends Animal {
  @override
  void makeSound() {
    print('Cat meows');
  }
}
 
void main() {
  Animal dog = Dog();
  Animal cat = Cat();
 
  dog.makeSound(); // Output: Dog barks
  cat.makeSound(); // Output: Cat meows
}

在上面的示例中,我们定义了一个基类Animal和两个子类Dog和Cat。每个子类都重写了基类的makeSound方法以实现自己特有的声音行为。在main函数中,我们创建了一个指向Dog对象的Animal引用和一个指向Cat对象的Animal引用,并调用它们各自的makeSound方法。由于Dart支持多态,程序会根据实际对象类型调用正确的方法,输出相应的声音。