本节目标

  • 多继承类的实现方式
  • 函数重名冲突

环境

  • Dart 2.1.0

类多继承

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
32
33
34
35
36
37
38
39
40
41
42
void main() {
var xm = Xiaomi();
xm.startup();
xm.shutdown();
xm.call();
xm.sms();
}

class Phone {
void startup() {
print('开机');
}
void shutdown() {
print('关机');
}
}

class AndroidPhone extends Phone {
void startup() {
super.startup();
print('AndroidPhone 开机');
}
}

class AndroidSystem {
void call() {
print('android call');
}
}

class Weixin {
void sms() {
print('weixin sms');
}
}

class Xiaomi extends AndroidPhone with AndroidSystem, Weixin {
void startup() {
super.startup();
print('AndroidPhone 开机');
}
}

采用 with ... , .... , ... 方式 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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
void main() {
var xm = Xiaomi();
xm.startup();
xm.shutdown();
xm.sms();
}

class Phone {
void startup() {
print('开机');
}
void shutdown() {
print('关机');
}
}

class AndroidPhone extends Phone {
void startup() {
super.startup();
print('AndroidPhone 开机');
}
}

class AndroidSystem {
void call() {
print('android call');
}
}

class Weixin {
void sms() {
print('weixin sms');
}
}

class QQ {
void sms() {
print('qq sms');
}
}

class Xiaomi extends AndroidPhone with AndroidSystem, Weixin, QQ {
void startup() {
super.startup();
print('AndroidPhone 开机');
}
}

遇到相同功能的函数,最后载入的会覆盖之前的函数定义

代码

参考


© 猫哥

https://ducafecat.tech