多态就是父类定义一个方法不去实现,让继承它的子类去实现,每个子类与不同的表现。

    1. abstract class Animal {
    2. void eat();
    3. }
    4. class Dog extends Animal {
    5. @override
    6. void eat() {
    7. // TODO: implement eat
    8. print("子类: 狗 eat 骨头");
    9. }
    10. void run() => print("子类: 狗 eat 骨头");
    11. }
    12. class Cat extends Animal {
    13. @override
    14. void eat() {
    15. // TODO: implement eat
    16. print("子类: 猫 eat 鱼🐟");
    17. }
    18. void run() => print("子类: 狗 eat 骨头");
    19. }
    20. void main() {
    21. Dog d1 = new Dog(); // 类型为子类Dog:可以调用子类的所有方法
    22. d1.eat();
    23. d1.run();
    24. Animal d2 = new Dog(); // 类型为父类Animal:仅能调用 `由子类实现的父类的抽象方法`
    25. d2.eat();
    26. // d2.run(); // 报错
    27. Animal c2 = new Cat(); // 类型为父类Animal:仅能调用 `由子类实现的父类的抽象方法`
    28. c2.eat();
    29. // c2.run(); // 报错
    30. }