dart 学习之多个接口 以及mixin学习

如果一个类继承了多个接口,那么需要实现对应的所有方法

dart 复制代码
abstract class A {
  printA();
}

abstract class B {
  printB();
}

class C implements A, B {
  @override
  printA() {
    print("C.a");
  }

  @override
  printB() {
    print("C.b");
  }
}

mixin既不是继承也不是接口

我们来看一个例子

dart 复制代码
class plus {
  String name;
  plus(this.name);
}

mixin A {
  void funA() {
    print("A");
  }
}

mixin B {
  funB() {
    print("B");
  }
}

class C extends plus with A, B {
  C(super.name);
}

main() {
  C c = new C("lalal");
  c.funA();
}

在Dart中,类只能直接继承自一个类,但是可以使用 mixins 来实现类似多继承的功能。Mixins 是一种代码重用的方式,允许将一个类的功能注入到另一个类中,而不需要创建整个新的层次结构。在你的例子中,类C继承了plus类并混入了两个mixin:A和B。

让我们逐一讲解你的代码:

dart 复制代码
class plus {
  String name;
  plus(this.name);
}

这是一个简单的类plus,它具有一个带有参数的构造函数,用于初始化name属性。

dart 复制代码
mixin A {
  void funA() {
    print("A");
  }
}

mixin B {
  funB() {
    print("B");
  }
}

这里定义了两个mixin:A和B。Mixin是一种在类中注入功能的方式。A有一个名为funA的函数,而B有一个名为funB的函数。

dart 复制代码
class C extends plus with A, B {
  C(super.name);
}

在这里,类C继承了plus类并混入了mixin A和B。构造函数C接受一个参数并通过super.name将其传递给父类plus的构造函数。这样,C类实际上包含了plus类的属性和方法,以及mixin A和B的功能。

dart 复制代码
main() {
  C c = new C("lalal");
  c.funA();
}
相关推荐
qq_3863226924 分钟前
华为网路设备学习-26(BGP协议 一)
学习
Otaku love travel41 分钟前
老系统改造增加初始化,自动化数据源配置(tomcat+jsp+springmvc)
java·tomcat·初始化·动态数据源
kymjs张涛1 小时前
零一开源|前沿技术周报 #7
android·前端·ios
DKPT1 小时前
Java设计模式之行为型模式(责任链模式)介绍与说明
java·笔记·学习·观察者模式·设计模式
L_autinue_Star1 小时前
手写vector容器:C++模板实战指南(从0到1掌握泛型编程)
java·c语言·开发语言·c++·学习·stl
晨岳1 小时前
CentOS 安装 JDK+ NGINX+ Tomcat + Redis + MySQL搭建项目环境
java·redis·mysql·nginx·centos·tomcat
执笔诉情殇〆1 小时前
前后端分离(java) 和 Nginx在服务器上的完整部署方案(redis、minio)
java·服务器·redis·nginx·minio
YuTaoShao2 小时前
【LeetCode 热题 100】24. 两两交换链表中的节点——(解法一)迭代+哨兵
java·算法·leetcode·链表
程序员的世界你不懂2 小时前
(20)Java+Playwright自动化测试- 操作鼠标拖拽 - 上篇
java·python·计算机外设
AI360labs_atyun2 小时前
Java在AI时代的演进与应用:一个务实的视角
java·开发语言·人工智能·科技·学习·ai