Flutter/Dart - Dart中一个类实现多个接口 以及Dart中的Mixins

Dart中implements实现多个接口

1abstract class A { 2 String name; 3 printA(); 4} 5 6abstract class B { 7 printB(); 8} 9 10class C implements A,B{ 11 @override 12 String name; 13 14 @override 15 printA() { 16 print('printA'); 17 } 18 19 @override 20 printB() { 21 // TODO: implement printB 22 return null; 23 } 24 25} 26 27main(List<String> args) { 28 C c = new C(); 29 c.printA(); 30}

Dart中的mixins 使用

mixins的中文意思就是混入,就是在类中混入其他功能

在dart中可以使用mixins实现类似多继承的功能

因为mixins可以使用的条件,随着dart版本一直在变,这里讲的是dart2.x中使用mixins的条件:

1.作为mixins的类只能继承自object,不能继承其他类

2.作为mixins的类不能有构造函数

3.一个类可以mixins多个mixin类

4.mixins绝不是继承,也不是接口,而是一种全新的特性

1class A { 2 String info = 'a'; 3 printA() { 4 print('printA'); 5 } 6} 7 8class B { 9 printB() { 10 print('printB'); 11 } 12} 13 14class C with A, B {} 15 16void main() { 17 C c = new C(); 18 c.printA(); 19 c.printB(); 20 print(c.info); 21}

Dart中的mixins 实现类似多继承功能

1class Person { 2 String name; 3 Person(this.name); 4} 5 6class A extends Person{ //在A继承了Person后, 这个时候不能再进行mixins 7 String info = 'a'; 8 printA() { 9 print('printA'); 10 } 11} 12 13class B { 14 // B({}) //不能在类里面写构造函数,否则也无法进行mixins 15 printB() { 16 print('printB'); 17 } 18} 19 20class C extends Person with A, B {} //---划重点----才可以继承Person类,Person类中也可以加构造函数 21 22void main() { 23 C c = new C(); 24 c.printA(); 25 c.printB(); 26 print(c.info); 27}

Dart中的mixins 的类型

1class A { 2 String info = 'a'; 3 printA() { 4 print('printA'); 5 } 6} 7 8class B { 9 printB() { 10 print('printB'); 11 } 12} 13 14class C with A, B {} 15 16void main() { 17 C c = new C(); 18 print(c is C); //true 19 print(c is A); //true 20 print(c is B); //true 21}
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Dart中一个类实现多个接口以及Dart中的 Mixins

一、Dart中一个类实现多个接口abstractclassA{Stringname;printA();}abstractclassB{printB();}classCimplementsA,B{