mixin翻译出来就是混入的意思

混入,就是一个类可以使用另一个类里的功能比如方法或者属性,其实这个功能并不陌生 ,有点类似c#里的扩展方法,但是并不同于,

mixin和implements有着本质的区别,implements是实现,dart中任何类都有一个隐形的接口,都可以被其他类实现

但是混入却有着限制,首先一个类如果定义了构造函数,哪怕是无参的,也是无法被别的类混入的,这在语法上就无法通过

因此一个类想被别的类混入,就无法声明构造函数

[dart] The class 'Student1' can't be used as a mixin because it declares a constructor. [mixin_class_declares_constructor]

那么命名构造函数存在可以么?

也不可以,所以只要一个类包含了任何性质的构造函数,那么它就无法被别的类混入了

另外我们可以把一个类直接定义成混入类 并限制只能是继承自Person的子类才可以混入,但是dart语法会提示person类必须满足无名的构造函数,也就是说可以不定义构造函数,也可以定义一个无参的构造函数,或者是一个可重载的构造函数,dart中的重载采用的是{}

 mixin  Student1 on Person
{
String name;
int age;
void test()
{ }
}

关于混入,这些是dart的语法,记住就可以了

如何理解dart的mixin的更多相关文章

  1. Dart:2.通过一个简单程序来理解Dart基础语法

    一 . 一个简单的 Dart 程序 // 这是程序执行的入口. main() { var number = 42; // 定义并初始化一个变量. printNumber(number); // 调用一 ...

  2. 理解Vue.mixin,带你正确的偷懒

    关于Vue.mixin在vue官方文档中是这么解释的: 混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能.一个混入对象可以包含任意组件选项.当组件使用混入对象时,所有 ...

  3. Mixin Network Whitepaper

    [译] Mixin Network(网络) 看到了李笑来老师牵头的 Mixin, 也仔细查看了 Mixin 白皮书 ,决定翻译过来 构造一个最大的,并且对开发者友好的移动区块链网络,连接现有的所有区块 ...

  4. 【Dart学习】-- Dart之匿名方法 & 回调函数 & 闭包

    一,匿名方法定义 (参数1,参数2,....){ 方法体... return 返回值 } 二,匿名方法特性 可赋值给变量,通过变量进行调用 可在其他方法中直接调用或传递给其他方法 void main( ...

  5. Flutter教程- Dart语言规范-知识点整理

    Flutter教程- Dart语言知识点整理 Dart语言简介 Dart语言介绍 ① 注释的方式 ② 变量的声明 ③ 字符串的声明和使用 ④ 集合变量的声明 ⑤ 数字的处理 ⑥ 循环的格式 ⑦ 抛异常 ...

  6. dart系列之:dart类的扩展

    目录 简介 使用extends 抽象类和接口 mixins 总结 简介 虽然dart中的类只能有一个父类,也就是单继承的,但是dart提供了mixin语法来绕过这样限制. 今天,和大家一起来探讨一下d ...

  7. Dart-Tour2-类

    类 Dart语法样式: https://www.dartlang.org/guides/language/effective-dart/style语法:https://www.dartlang.org ...

  8. 2018-11-23 手工翻译Vue.js源码:尝试重命名标识符与文本

    续前文: 手工翻译Vue.js源码第一步:14个文件重命名 对core/instance/索引中的变量, 方法进行重命名如下(题图): import { 混入初始化 } from './初始化' im ...

  9. React的设计哲学 - 简单之美

    React最初来自Facebook内部的广告系统项目,项目实施过程中前端开发遇到了巨大挑战,代码变得越来越臃肿且混乱不堪,难以维护.于是痛定思痛,他们决定抛开很多所谓的“最佳实践”,重新思考前端界面的 ...

随机推荐

  1. js实现图片上传

    //上传图片 function uploadImg(){ //loading $("#loading").ajaxStart(function() { $(this).show() ...

  2. BZOJ3141 Hnoi2013 游走 【概率DP】【高斯消元】*

    BZOJ3141 Hnoi2013 Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点 ...

  3. You're Given a String...

    You're given a string of lower-case Latin letters. Your task is to find the length of its longest su ...

  4. HttpMessageConvert

    1. 我们先来看看框架会自动注册哪些httpmessageconvert? 在哪个地方开始注册的? 在对mvc:annotation-driven解析的AnnotationDrivenBeanDefi ...

  5. redis在mac中的安装和启动

    http://blog.csdn.net/chenshuai1993/article/details/51519384 http://www.jianshu.com/p/6b5eca8d908b

  6. lapis docker 运行说明

    1. lapis docker 镜像制作 因为openresty 新版本一个json 库的问题,我们使用的是 openresty:1.11.2.1 基础镜像 FROM openresty/openre ...

  7. 申请apple开发人员账号的波折

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/xiebaochun/article/details/37578395 是的.po主要搞ios开发了, ...

  8. @RequestParam和@RequestBody的区别-------springMVC

    https://blog.csdn.net/qq_27093465/article/details/50519444 @RequestParam 1,用来处理Content-Type: 为 appli ...

  9. display的flex属性使用详解

    flex的兼容性在pc端还算阔以,但是在移动端,那就呵呵了.今天我们只是学习学习,忽略一些不重要的东西. 首先flex的使用需要有一个父容器,父容器中有几个items. 父容器:container 属 ...

  10. 搭建基于hyperledger fabric的联盟社区(五) --启动Fabric网络

    现在所有的文件都已经准备完毕,我们可以启动fabric网络了. 一.启动orderer节点 在orderer服务器上运行: cd ~/go/src/github.com/hyperledger/fab ...