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

顺心
• 阅读 2183

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
} 
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
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
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Charles14 Charles14
3年前
Dart中一个类实现多个接口以及Dart中的 Mixins
一、Dart中一个类实现多个接口abstractclassA{Stringname;printA();}abstractclassB{printB();}classCimplementsA,B{
Aidan075 Aidan075
3年前
Dart中的抽象类、多态、以及接口
一、Dart中的抽象类Dart中抽象类: Dart抽象类主要用于定义标准,子类可以继承抽象类,也可以实现抽象类接口。  1、抽象类通过abstract 关键字来定义  2、Dart中的抽象方法不能用abstract声明
Stella981 Stella981
2年前
Spring Boot日志集成
!(https://oscimg.oschina.net/oscnet/1bde8e8d00e848be8b84e9d1d44c9e5c.jpg)SpringBoot日志框架SpringBoot支持JavaUtilLogging,Log4j2,Lockback作为日志框架,如果你使用star
Stella981 Stella981
2年前
Redis 6.0 正式版终于发布了!除了多线程还有什么新功能?
!(https://oscimg.oschina.net/oscnet/b8c8b22b9f44bd806c26b486e1893a263a4.jpg)这是我的第56篇原创文章!(https://oscimg.oschina.net/oscnet/8bf00bc92f6a1cd46596ee44bac64a801ae.pn
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这