1. 写在前面

在上篇文章中介绍了Dart中的抽象类implements,那么现在就继续来学习 Dart中的Mixins的混入。

【Flutter】苹果Mac电脑配置flutter开发环境

【Flutter】 Android Studio 安装第三方模拟器—网易MuMu

【Flutter】项目运行报错Failed to find Build Tools revision 29.0.2

【Flutter】flutter doctor 报错Android license status unknown. Run `flutter doctor --android-licenses‘

【Flutter】如何新建项目,运行你的第一个 flutter 工程项目

【Flutter】Dart中的var、final 和 const基本使用

【Flutter】Dart数据类型之num

【Flutter】Dart数据类型之String

【Flutter】Dart的数据类型list&Map(数组和字典)

【Flutter】Dart的方法与箭头函数

【Flutter】Dart的方法中的可选参数、方法作为参数传递

【Flutter】Dart中的匿名函数、闭包

【Flutter】Dart中的类和对象

【Flutter】Dart中的构造函数

【Flutter】Dart的工厂构造方法&单例对象&初始化列表

【Flutter】Dart的类方法和对象操作符

【Flutter】Dart中的继承

【Flutter】Dart中的抽象类和接口

2. 什么是混入?

什么是Mixins?说白了就是多继承

2.1 混入举例

  • with
class D1 extends A1 with B1,C1 {d1() => print("D1...");}
class A1 {a1() => print("A1...");
}
class B1 {b1() => print("B1...");
}
class C1 {c1() => print("C1...");
}

这里 with混入的意思,D1继承extends A1 ,然后混入with B1,C1,以此达到多继承的目的。

  • 混合的对象是类
  • 可以混合多个
void main() {mixinTest();
}
mixinTest(){D1 d = D1();d.d1();d.a1();d.b1();d.c1();
}
  • 打印结果如下:

混入多个类,这对方法复用带来的极大的便利性,破除了众多限制,不需要实例化混入的类,也不需要混入的类单例化。

2.2 混入同名方法会这样?

如果多个混入的类,有同名的方法,调用这个方法,到底是调用谁的呢?

class D1 extends A1 with B1,C1 {d1() => print("D1...");}
class A1 {a1() => print("A1...");
}
class B1 {a1() => print("B1...");
}
class C1 {a1() => print("C1...");
}
  • 测试结果

从打印的结果来看,如果混入的类里面有同名的方法,就是谁最后混入,调用的就是谁的方法,前面的会被后面的覆盖掉!

  • 作为混入的类,是不能实现构造方法

作为混入的类,是不能实现构造方法,会报错,如下:

2.3 混入的简写

  • 混入还可以下面这样写
class D1 = A1 with B1,C1;
// class D1 extends A1 with B1,C1 {//
// }

只要 D1 中没有属性和方法就可以这样简便的写。

2. 4 操作符重载

  • 操作符重载

正常情况下,对象是不可以比较的,会报错,如下:

  • 重载操作符代码
operatorTest(){OperatorClass op1 = OperatorClass(20);OperatorClass op2 = OperatorClass(18);//正常情况下 是不可以比较对象的,需要重载操作符print(op1 > op2);}
class OperatorClass {int age;OperatorClass(this.age);//重载操作符bool operator > (OperatorClass other) => this.age > other.age;
}

3. 写在后面

关注我,更多内容持续输出

  • CSDN
  • 掘金
  • 简书

【Flutter】Dart中的Mixins混入你知道是什么吗?相关推荐

  1. Dart中的mixins

    /* mixins的中文意思是混入,就是在类中混入其他功能.在Dart中可以使用mixins实现类似多继承的功能,with关键字因为mixins使用的条件,随着Dart版本一直在变,这里讲的是Dart ...

  2. Vue中使用mixins混入

    mixins在Vue中的用法 一.mixins混入 混入(mixins)提供了一种非常灵活的方式,来分发vue组件中的可服用功能.一个混入对象可以包含任意的组件选项(vue在script的部分).当组 ...

  3. Flutter Dart 中List的初始化

    List的初始化有多种方式 main(){List<int> myList=[];myList.add(1);print(myList[0]); }

  4. Dart中抽象类 多态以及接口

    Dart中抽象类:Drat抽象类主要是用于定义标准,子类可以继承抽象类,也可以实现抽象类接口. 1.抽象类通过abstract关键字来定义 2.Drat中的抽象方法不能用abstract声明,Dart ...

  5. TypeScript Mixins 混入

    简介 TS 中Mixins混入类是与vue中的mixins混入语法,简单来说也是对多个对象,类等的合并. 参考:https://www.tslang.cn/docs/handbook/mixins.h ...

  6. Flutter 开发中最实用的 Dart 语法知识

    零.前言 都说 Flutter 是谷歌的新宠,这段时间有空,就学习了一下 Dart 语法.本篇文章将会详细全面的介绍 Dart 常用语法. 一.变量和常量 在 Drat 语言中,一切皆对象,对象的默认 ...

  7. 如何在 Flutter 和 Dart 中检查数字字符串

    如何在 Flutter 和 Dart 中检查数字字符串 数字字符串只是字符串格式的数字. 数字字符串示例: '123', '0.123', '4.234,345', '-33.33', '+44.44 ...

  8. dart开发Android服务,关于android:在Flutter应用中使用由swagger生成的Dart代码生成的Web服务...

    我正在尝试使用Flutter开发一个移动应用程序,我使用swagger生成了包含所有Web服务的Dart文件代码生成.我想从Web服务中获取所有用户的列表. 在屏幕上,我想为每个用户显示:图像,名字, ...

  9. [Dart] Flutter开发中的几个常用函数

    几个Flutter开发中的常用函数 /** 返回当前时间戳 */static int currentTimeMillis() {return new DateTime.now().millisecon ...

  10. Flutter --- Dart简介

    一.简介 由Google主导开发,于2011年10月公开.它的开发团队由Google Chrome浏览器V8引擎团队的领导者拉尔斯·巴克主持,目标在于成为下一代结构化Web开发语言.类似JavaScr ...

最新文章

  1. HTML5中figure标签使用实例
  2. python学习之内置函数(二)
  3. linux GD库安装
  4. mantelhean.test r语言_请教如何将mantel test报告性的结果转化为表格。
  5. Java的代理模式之静态代理和动态代理
  6. makefile之目标与依赖(1)
  7. hadoop单节点配置并且统计单词
  8. 云计算发展备受瞩目的五大方向
  9. vagrant 常用的几个命令
  10. hive执行更新和删除操作
  11. java getname threads_Java8并发教程:Threads和Executors
  12. 计算机桌面组成部分教案,三年级第6课 《认识桌面》优秀教案
  13. 蓝桥杯C/C++B组历届真题刷题【合集】
  14. 什么是Linux内核?它有什么功能?
  15. niushop分销版开源商城旗舰版v3.7商城源码旗舰版PJ版
  16. 2018ICPC焦作站赛后总结
  17. Jmeter5.x线程组setUp-tearDown和调度器实战
  18. Three.js 实现3D模拟太阳系
  19. 使用ChatGPT工具阅读文献的实战教程
  20. Ubuntu16.04 安装配置深度学习配置:GPU加速 Cuda+cudnn+opencv+caffe

热门文章

  1. HTML5 20180918
  2. 【开源GPS追踪】 之 服务器端opengts安装
  3. ONVIF流媒体播放流程
  4. JSADS-日志对象MyLogger
  5. 小伯利恒之歌(音乐)-Oh Little Town of Bethlehem(Virtual Tour)一次真实的旅行,看看耶稣的家乡...
  6. python实训day7
  7. 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)(Finchley版本)...
  8. 每日的代码量真的重要么?
  9. 正则表达式与java String.split()
  10. day25,多继承,组合,接口,抽象类和鸭子型