IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 【Flutter】Dart中的Mixins混入你知道是什么吗? -> 正文阅读

[移动开发]【Flutter】Dart中的Mixins混入你知道是什么吗?

1. 写在前面

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

Flutter

【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. 写在后面

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

🌹 喜欢就点个赞吧👍🌹

🌹 觉得有收获的,可以来一波 收藏+关注,以免你下次找不到我😁🌹

🌹欢迎大家留言交流,批评指正,转发请注明出处,谢谢支持!🌹

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-10-28 12:30:08  更:2021-10-28 12:31:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:59:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码