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. table中文字过长使用省略号

    1.设置table固定布局,否则自适应布局会不受控制 table{ table-layout: fixed; } 2.设定td宽度占比 <table> <col width=&quo ...

  2. BZOJ3747 POI2015 Kinoman 【线段树】*

    BZOJ3747 POI2015 Kinoman Description 共有m部电影,编号为1~m,第i部电影的好看值为w[i]. 在n天之中(从1~n编号)每天会放映一部电影,第i天放映的是第f[ ...

  3. 20179223《Linux内核原理与分析》第十一周学习笔记

    缓冲区溢出漏洞实验 一.实验简介 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器和 ...

  4. maven创建多模块项目

    在eclipse下构建maven项目,该项目由多个子模块组成. 1.创建一个父项目 NEW -->project-->maven-->maven Project,点击下一步,进入ne ...

  5. [datatables杂记] sAjaxSource 数据源 Search 后 fnInitComplete 不执行。

    var oTable = $('#div_list').dataTable({ "oLanguage": {//语言国际化 "sUrl": "/Adm ...

  6. lapis 集成openresty最新版本cjson 问题的解决

    备注:    为了解决安装了lapis.同时又希望使用新版nginx 以及openresty 的特性(stream ...)   1. 解决方法 参考: https://github.com/leaf ...

  7. CentOS6.5安装Cacti统计图乱码解决

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://fengwan.blog.51cto.com/508652/1430505 这个就 ...

  8. Spark的CombineByKey

    combineBykey关键是要明白里面的三个函数: 1. 当某个key第一次出现的时候,走的是第一个函数(createCombin):A function that creates a combin ...

  9. Shell脚本一键安装LNMP环境

    https://sourceforge.net/projects/opensourcefile/files/ Nginx是一款高性能的HTTP和反向代理服务器.Nginx在反向代理,Rewrite规则 ...

  10. python-unittest-生成测试报告

    HTMLTestRunner HTMLTestRunner 是 Python 标准库的 unittest 单元测试框架的一个扩展.它生成易于使用的 HTML 测试报告. 一.目录结构 先来看一下项目的 ...