Dart中implements实现多个接口
abstract class A {
String name;
printA();
}
abstract class B {
printB();
}
class C implements A,B{
@override
String name;
@override
printA() {
print('printA');
}
@override
printB() {
// TODO: implement printB
return null;
}
}
main(List<String> args) {
C c = new C();
c.printA();
}
Dart中的mixins 使用
mixins的中文意思就是混入,就是在类中混入其他功能
在dart中可以使用mixins实现类似多继承的功能
因为mixins可以使用的条件,随着dart版本一直在变,这里讲的是dart2.x中使用mixins的条件:
1.作为mixins的类只能继承自object,不能继承其他类
2.作为mixins的类不能有构造函数
3.一个类可以mixins多个mixin类
4.mixins绝不是继承,也不是接口,而是一种全新的特性
class A {
String info = 'a';
printA() {
print('printA');
}
}
class B {
printB() {
print('printB');
}
}
class C with A, B {}
void main() {
C c = new C();
c.printA();
c.printB();
print(c.info);
}
Dart中的mixins 实现类似多继承功能
class Person {
String name;
Person(this.name);
}
class A extends Person{ //在A继承了Person后, 这个时候不能再进行mixins
String info = 'a';
printA() {
print('printA');
}
}
class B {
// B({}) //不能在类里面写构造函数,否则也无法进行mixins
printB() {
print('printB');
}
}
class C extends Person with A, B {} //---划重点----才可以继承Person类,Person类中也可以加构造函数
void main() {
C c = new C();
c.printA();
c.printB();
print(c.info);
}
Dart中的mixins 的类型
class A {
String info = 'a';
printA() {
print('printA');
}
}
class B {
printB() {
print('printB');
}
}
class C with A, B {}
void main() {
C c = new C();
print(c is C); //true
print(c is A); //true
print(c is B); //true
}