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

顺心 等级 846 0 0
标签: dart接口Dart

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
} 
收藏
评论区

相关推荐

[Dart]Dart语言之旅<一>:简介
我们假定你已经知道如何用另一种语言编程,《Dart语言之旅》将向你展示了如何使用每个主要的Dart特性——从变量和运算符到类和库。 一个基本的Dart程序 下面的代码使用了许多Dart最基本的功能: // Define a function. printNumber(num aNumber) { print('The number is $a
Dart官方文档翻译(一)(Dart之旅)
这篇文章将会向你展示如何使用Dart的每一个知识点,包括变量,操作符,类,类库,但这是在你已经有一个其他语言的编码经验的前提下。 为了学习Dart更多关于Dart的核心类库,请查看A Tour of the Dart Libraries,当你想知道更多语言特征,挺查阅Dart language specification 你可以通过DartPad 来尝试
<Dart基础>Dart简介
Dart基础系列: Dart简介(https://www.jianshu.com/p/c749f40828a5) Dart语法(上)(https://www.jianshu.com/p/6b5689342e24) <基础Dart语法(下)(https://www.jianshu.com/p/7c3eba46e679) 一、简
Dart基础&gt;Dart语法(上)
Dart基础系列: Dart简介(https://www.jianshu.com/p/c749f40828a5) Dart语法(上)(https://www.jianshu.com/p/6b5689342e24) <基础Dart语法(下)(https://www.jianshu.com/p/7c3eba46e679) 说明:
Dart基础语法简介
Dart基础系列: Dart简介(https://www.jianshu.com/p/c749f40828a5) Dart语法(上)(https://www.jianshu.com/p/6b5689342e24) <基础Dart语法(下)(https://www.jianshu.com/p/7c3eba46e679) 一、简
flutter -- dart基础之dart简介和安装
Dart介绍: Dart是由谷歌开发的计算机编程语言,它可以被用于web、服务器、移动应用 和物联网等领域的开发。 Dart诞生于2011年,号称要取代JavaScript。但是过去的几年中一直不温不火。直到Flutter的出现现在被人们重新重视。 要学Flutter的话我们必须首先得会Dart。 da
Dart | 浅析dart中库的导入与拆分
前言 最近十分热门的跨平台框架使用了一门比较生僻的编程语言dart。dart语言本身深受早期一些编程语言的影响。特别是Smalltalk,Java和JavaScript。我是从Java语言向dart过度的,一开始感觉很不错,快速就对这门语言有了一个初步的认识,并能够写小段代码了。 但在flutter的不断学习过程中,我遇到了不少因为dart的一些语
Dart教程(一):dart安装
一、安装dart sdk brew tap dartlang/dart brew install dart 二、安装VSCode 去官网下载即可 三、安装dart插件 (https://imghelloworld.osscnbeijing.aliyuncs.com/af7d1de25caf6599a4839b56f4f0d
Flutter/Dart - Dart中一个类实现多个接口 以及Dart中的Mixins
Dart中implements实现多个接口 abstract class A { String name; printA(); } abstract class B { printB(); } class C implements A,B{ @override String name;
【Flutter实战】Dart线程模型及异常捕获
2.6 Flutter异常捕获在介绍Flutter异常捕获之前必须先了解一下Dart单线程模型,只有了解了Dart的代码执行流程,我们才能知道该在什么地方去捕获异常。 2.6.1 Dart单线程模型在Java和ObjectiveC(以下简称“OC”)中,如果程序发生异常且没有被捕获,那么程序将会终止,但是这在Dart或JavaScript中则不会!
Dart中的抽象类、多态、以及接口
一、Dart中的抽象类 Dart中抽象类: Dart抽象类主要用于定义标准,子类可以继承抽象类,也可以实现抽象类接口。   1、抽象类通过abstract 关键字来定义   2、Dart中的抽象方法不能用abstract声明
Flutter - 深入理解Dart虚拟机启动
基于Flutter 1.5,从源码视角来深入剖析引擎启动中的Dart虚拟机启动流程,相关源码目录见文末附录一、概述 1.1 Dart虚拟机概述Dart虚拟机拥有自己的Isolate,完全由虚拟机自己管理的,Flutter引擎也无法直接访问。Dart的UI相关操作,是由Root Isolate通过Dart的C调用,或者是发送消息通知的方式
Dart虚拟机运行原理
一、Dart虚拟机 1.1 引言Dart VM是一种虚拟机,为高级编程语言Dart提供执行环境,但这并意味着Dart在D虚拟机上执行时,总是采用解释执行或者JIT编译。 例如还可以使用Dart虚拟机的AOT管道将Dart代码编译为机器代码,然后运行在Dart虚拟机的精简版环境,称之为预编译运行时(precompiled runtime)环境,该环境不包含任何
Flutter 介绍、运行环境
Flutter 是谷歌公司开发的一款开源、免费的移动 UI 框架,可以让我们快速的在 Android 和iOS 上构建高质量 App。它最大的特点就是跨平台、以及高性能。 Flutter 基于谷歌的 dart 语言,如果没有任何 Dart 语言的基础,不建议直接学习 Flutter。建议先学习 Dart 语言的基本语法。然后再进入 Flutter 的学习
Flutter开发指南之理论篇:Dart语法05(单线程模型,事件循环模型,Isolate)
此文转载自:https://blog.csdn.net/AndrExpert/article/details/110823218 总目录 === [Flutter开发指南之理论篇:Dart语法01(数据类型,变量,函数)](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fjiangd