一个类实现多接口_Mixins
一个类实现多接口/Mixins
一个类实现多接口_Mixins
一个类实现多接口/Mixins
实现多个接口
需要实现多个接口的属性和方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
abstract class A {
String name = '';
printA();
}
abstract class B {
printB();
}
// 实现多个接口 - 需要实现A、B的属性和方法
class C implements A,B {
@override
String name = '';
@override
printA() {
print('A');
}
@override
printB() {
print('B');
}
}
main() {
C c = new C();
c.printA(); // A
}
Mixins
Mixins的中文意思是“混入”,就是在类中混入其它功能;
在Dart中可以使用 mixins 实现类似多继承的功能。
Dart 是不支持多继承的,但是它支持 mixin,简单来讲 mixin 可以 “组合” 多个类,这样就极大的减少了代码冗余。mixin是面向对象程序设计语言中的类,提供了方法的实现。其他类可以访问mixin类的方法、变量而不必成为其子类。简而言之,mixins是普通的类,我们可以从中扩展方法(或变量)而不扩展类。
定义一个 Person 类,实现吃饭、说话、走路和写代码功能,同时定义一个 Dog 类,实现吃饭、和走路功能。我们定义了几个 mixin,然后通过 with 关键字将它们组合成不同的类。有一点需要注意:如果多个mixin 中有同名方法,with 时,会默认使用最后面的 mixin 的,mixin 方法中可以通过 super 关键字调用之前 mixin 或类中的方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Person {
say() {
print('say');
}
}
mixin Eat {
eat() {
print('eat');
}
}
mixin Walk {
walk() {
print('walk');
}
}
mixin Code {
code() {
print('key');
}
}
class Dog with Eat, Walk{}
class Man extends Person with Eat, Walk, Code{}
main() {
Man m = new Man();
m.eat(); // eat
}
本文由作者按照 CC BY 4.0 进行授权