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