如何理解dart的mixin
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的更多相关文章
- Dart:2.通过一个简单程序来理解Dart基础语法
一 . 一个简单的 Dart 程序 // 这是程序执行的入口. main() { var number = 42; // 定义并初始化一个变量. printNumber(number); // 调用一 ...
- 理解Vue.mixin,带你正确的偷懒
关于Vue.mixin在vue官方文档中是这么解释的: 混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能.一个混入对象可以包含任意组件选项.当组件使用混入对象时,所有 ...
- Mixin Network Whitepaper
[译] Mixin Network(网络) 看到了李笑来老师牵头的 Mixin, 也仔细查看了 Mixin 白皮书 ,决定翻译过来 构造一个最大的,并且对开发者友好的移动区块链网络,连接现有的所有区块 ...
- 【Dart学习】-- Dart之匿名方法 & 回调函数 & 闭包
一,匿名方法定义 (参数1,参数2,....){ 方法体... return 返回值 } 二,匿名方法特性 可赋值给变量,通过变量进行调用 可在其他方法中直接调用或传递给其他方法 void main( ...
- Flutter教程- Dart语言规范-知识点整理
Flutter教程- Dart语言知识点整理 Dart语言简介 Dart语言介绍 ① 注释的方式 ② 变量的声明 ③ 字符串的声明和使用 ④ 集合变量的声明 ⑤ 数字的处理 ⑥ 循环的格式 ⑦ 抛异常 ...
- dart系列之:dart类的扩展
目录 简介 使用extends 抽象类和接口 mixins 总结 简介 虽然dart中的类只能有一个父类,也就是单继承的,但是dart提供了mixin语法来绕过这样限制. 今天,和大家一起来探讨一下d ...
- Dart-Tour2-类
类 Dart语法样式: https://www.dartlang.org/guides/language/effective-dart/style语法:https://www.dartlang.org ...
- 2018-11-23 手工翻译Vue.js源码:尝试重命名标识符与文本
续前文: 手工翻译Vue.js源码第一步:14个文件重命名 对core/instance/索引中的变量, 方法进行重命名如下(题图): import { 混入初始化 } from './初始化' im ...
- React的设计哲学 - 简单之美
React最初来自Facebook内部的广告系统项目,项目实施过程中前端开发遇到了巨大挑战,代码变得越来越臃肿且混乱不堪,难以维护.于是痛定思痛,他们决定抛开很多所谓的“最佳实践”,重新思考前端界面的 ...
随机推荐
- HDU2896 病毒侵袭 【AC自动机】
HDU2896 病毒侵袭 Problem Description 当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻....在这样的时刻,人们却异常兴奋--我们能在有生之年看到500年一 ...
- MySQL中的表中增加删除字段
1.增加一个字段alter table user表 add COLUMN new1字段 VARCHAR(20) NOT NULL DEFAULT 0; //增加一个字段,VARCHERA 20 , ...
- 在线编辑器KindEditor的使用
1.官网下载:点击进入 2.解压后目录说明 ├── asp asp示例 ├── asp.net asp.net示例 ├── attached 空文件夹,放置关联文件attached ├── examp ...
- ballerina 学习十三 函数&&documentation
ballerina 函数和其他语言一样的,可以实现重用 简单例子 代码 import ballerina/io; documentation { `User` is a user defined ob ...
- 几个中文排版web 类库
1. typo.css http://typo.sofi.sh/ 2. yue.css http://lab.lepture.com/yue.css/ 规范,统一才是开发的王道.
- Oracle11g的服务
成功安装Oracle 11g数据库后,你会发现自己电脑运行速度会变慢,配置较低的电脑甚至出现非常卡的状况,通过禁止非必须开启的Oracle服务可以提升电脑的运行速度.那么,具体该怎么做呢.按照win7 ...
- win10下启动zkui
zkui是一个开源的zookeeper可视化工具,现在看下我们怎么启动这个工具.首先下载源码(我把它放在E:\workspace): git clone https://github.com/Deem ...
- SharePoint2013切换帐户登录菜单显示
SharePoint2013帐户姓名显示的地方没有切换帐户的菜单,这个功能对于终端用户是可有可无的,但对于sharepoint管理员或sharepoint开发人员来讲,却是一个很重要的菜单,由于经常要 ...
- hyperledger fabric共识组件分析 --背书策略
在fabric中,共识过程意味着多个节点对于某一批交易的发生顺序.合法性以及它们对账本状态的更新结构达成一致的观点.满足共识则意味着多个节点可以始终保证相同的状态,对于以同样顺序到达的交易可以进行一致 ...
- Spring集成缓存
Want 上一篇简单服务端缓存API设计设计并实现了一套缓存API,适应不同的缓存产品,本文重点是基于Spring框架集成应用开发. 缓存集成 以普通Web应用开发常见的搭配Spring+Spring ...