Dart 混入(Mixin)
混入(Mixin)是一段公共代码。混入有两种声明方式:
将类当作混入
class MixinA {...}
- 作为 Mixin 的类只能继承自 Object,不能继承其他类
- 作为 Mixin 的类不能有构造函数
- 通过 mixin 关键字声明
mixin MixinB {...}
混入(Mixin)可以提高代码复用的效率,普通类可以通过with来使用混入
class MyClass with MixinA,MixinB {...}
使用多个混入时,后引入的混入会覆盖之前混入中的重复内容
MixinA
和MixinB
中都有hello()
方法,MyClass
会使用MixinB
中的方法
class Father {}
//用作混入的类,不能继承除了 Object 意外的其他类
// class MixinA extends Father {
class MixinA {
String name = 'MixinA';
// 用作混入的类,不能拥有构造函数;
// MixinA();
void printA() {
print('A');
}
void run() {
print('A is running');
}
}
mixin MixinB {
String name = 'MixinB';
void printB() {
print('B');
}
void run() {
print('B is running');
}
}
class MyClass with MixinA, MixinB {}
void main(List<String> args) {
var c = MyClass();
c.printA();
c.printB();
// 后引入的混入,会覆盖之前混入进去的内容
print(c.name);
c.run();
}