15. Dart中一个类实现多个接口以及dart中的Mixins
目录
Dart 中一个类实现多个接口
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; } } void main(){ C c=new C(); c.printA(); }
Dart 中的 Mixins
mixins 的中文意思是混入,就是在类中混入其他功能。
在 Dart 中可以使用 mixins 实现类似多继承的功能
因为 mixins 使用的条件,随着 Dart 版本一直在变,这里讲的是 Dart2.x 中使用 mixins 的条件:
1、作为 mixins 的类只能继承自 Object,不能继承其他类
2、作为 mixins 的类不能有构造函数
3、一个类可以 mixins 多个 mixins 类
4、mixins 绝不是继承,也不是接口,而是一种全新的特性
class Person { String name; num age; Person(this.name, this.age); printInfo() { print('${this.name}----${this.age}'); } void run() { print("Person Run"); } } class A { String info = "this is A"; void printA() { print("A"); } void run() { print("A Run"); } } class B { void printB() { print("B"); } void run() { print("B Run"); } } class C extends Person with B, A { C(String name, num age) : super(name, age); } void main() { var c = new C('张三', 20); c.printInfo(); // c.printB(); // print(c.info); c.run(); }
运行结果:
张三----20 A Run
Dart 中 Mixins 类型
mixins 的实例类型是什么?
很简单,mixins 的类型就是其超类的子类型。
class A { String info = "this is A"; void printA() { print("A"); } } class B { void printB() { print("B"); } } class C with A, B {} void main() { var c = new C(); print(c is C); //true print(c is A); //true print(c is B); //true // var a=new A(); // print(a is Object); }
以上就是 Dart 中一个类实现多个接口以及 dart 中的 Mixins 知识,希望大家动手敲一下,下节我们继续讲解 Dart 的泛型相关内容。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
码云笔记 » 15. Dart中一个类实现多个接口以及dart中的Mixins
码云笔记 » 15. Dart中一个类实现多个接口以及dart中的Mixins