Dart中抽象类: Dart抽象类主要用于定义标准,子类可以继承抽象类,也可以实现抽象类接口。
- 抽象类通过 abstract 关键字来定义
- Dart中的抽象方法不能用abstract声明,Dart中没有方法体的方法我们称为抽象方法。
- 如果子类继承抽象类必须得实现里面的抽象方法
- 如果把抽象类当做接口实现的话必须得实现抽象类里面定义的所有属性和方法。
- 抽象类不能被实例化,只有继承它的子类可以
extends抽象类 和 implements 的区别:
- 如果要复用抽象类里面的方法,并且要用抽象方法约束自类的话我们就用extends继承抽象类
- 如果只是把抽象类当做标准的话我们就用implements实现抽象类
// 定义一个Animal 类要求它的子类必须包含eat方法
abstract class Animal {
eat(); // 抽象方法
run(); // 抽象方法
printInfo() {
print('我是抽象类里的普通抽象方法');
}
}
class Dog extends Animal {
@override
eat() {
// TODO: implement eat
print('小狗在吃骨头');
}
@override
run() {
// TODO: implement run
print('小狗在跑');
}
}
class Cat extends Animal {
@override
eat() {
// TODO: implement eat
print('小猫在吃老鼠');
}
@override
run() {
// TODO: implement run
print('小猫在跑');
}
}
main() {
Dog d = new Dog();
d.eat(); // 小狗在吃东西
d.run(); // 小狗在跑
d.printInfo(); // 我是抽象类里的普通抽象方法
Cat c = new Cat();
c.eat(); // 小猫在吃东西
c.run(); // 小猫在跑
c.printInfo(); // 我是抽象类里的普通抽象方法
// Animal a = new Animal(); // 抽象类没法直接被实例化
}