多态就是父类定义一个方法不去实现,让继承它的子类去实现,每个子类与不同的表现。
abstract class Animal {
void eat();
}
class Dog extends Animal {
@override
void eat() {
// TODO: implement eat
print("子类: 狗 eat 骨头");
}
void run() => print("子类: 狗 eat 骨头");
}
class Cat extends Animal {
@override
void eat() {
// TODO: implement eat
print("子类: 猫 eat 鱼🐟");
}
void run() => print("子类: 狗 eat 骨头");
}
void main() {
Dog d1 = new Dog(); // 类型为子类Dog:可以调用子类的所有方法
d1.eat();
d1.run();
Animal d2 = new Dog(); // 类型为父类Animal:仅能调用 `由子类实现的父类的抽象方法`
d2.eat();
// d2.run(); // 报错
Animal c2 = new Cat(); // 类型为父类Animal:仅能调用 `由子类实现的父类的抽象方法`
c2.eat();
// c2.run(); // 报错
}