1.继承 extends
- dart里的继承是单继承,即只能又一个父类
- 子类会继承父类所有非私有属性和方法
- 子类重写父类的方法用
@override
,子类调用父类方法用super
2.混合 mixin
(with
)
-
mixin
不能有构造函数 - 一个类可以
mixin
多个mixin
类 -
mixin
不是继承
3.接口实现implements
- 每个类都是一个隐式接口,包含所有的属性和方法
- 当一个类被
implements
时, 子类需要重写该类的所有属性和方法,并在前面加@override
4.抽象类abstract
- 不能被实例化,只能被子类继承
- 可以在抽象类中定义抽象方法与普通方法,抽象方法不能有实现,且子类必须重写该方法,而普通方法不强制子类重写
抽象类与接口实现看起来有很多相似的地方, 但也有不同之处
abstract class | interface class |
---|---|
不能实例化 | 可以实例化 |
只有抽象方法需要重写 | 所有属性与方法都要重写 |
只能继承一个抽象类 | 能implement多个类 |