Dart教程(三):类的定义和使用
类
特点:
- 面向对象
- mixin继承
- 所有的类都继承自object
一、类的实例变量(成员变量)
对象的成员包括:function(成员函数)和data(成员变量)
点语法:略
.?的使用:不为null则赋值
// If p is non-null, set its y value to 4.
p?.y = 4;
实例变量(instance variable)
几个特点:
- 未初始化的实例变量的值都为null;(All uninitialized instance variables have the value null.)
- 每个成员变量都默认生成一个getter方法,非final修饰的实例变量会同时生成一个setter方法(All instance variables generate an implicit getter method. Non-final instance variables also generate an implicit settermethod. For details, see Getters and setters.
) - 在声明的时候初始化实例变量,这个值将在实例对象被创建时被赋值给实例变量,也就是说,这个过程发生在构造函数和初始化列表之前(If you initialize an instance variable where it is declared (instead of in a constructor or method), the value is set when the instance is created, which is before the constructor and its initializer list execute.)
初始化列表(initializer list )
二、构造函数
构造函数的两种形式:命名构造函数(ClassName.identifier)、默认构造函数(ClassName)
var p1 = Point(2, 2);
var p2 = Point.fromJson({'x': 1, 'y': 2});
const、final、static
const:变量修饰词,含义是编译时就需要被确认类型和具体的值且只能赋值一次(类似于final的强化)
final:变量修饰词,只能赋值(初始化)一次的变量
static:变量修饰词,改变变量的生命周期和存储方式(OC中),而在dart中,只有一个意思:修饰类的成员变量,被修饰的成员变量可以被这个类使用而不能被这个类的实例使用。除此之外没有其他任何意思。
static来源:
"static" means a member is available on the class itself instead of on instances of the class. That's all it means, and it isn't used for anything else. static modifies members.
例子:
final、const对比:
- final虽然是不可变(被初始化后),但是可以再运行时被初始化,所以编译时,类型和值都可以是不确定的,而const做不到
- const和final都是修饰var(变量),只是含义不同而已
例子:
void main() {final name = 'Bob'; // 正确
// name = 'Alice'; // 错误,final 变量只能赋值一次// const name1; // 错误,const 变量是编译时常量,需要在声明时赋值进行初始化
// final name1; // 错误,final变量需要在声明时赋值进行初始化const name2 = 'Alice'; // 正确// const name3 = name; // 错误,name 是个变量,不能赋给constfinal name4 = name2; // 正确,可以把const 常量赋给 final 变量// final names1 = const[name, 3, 4]; // 错误,name 是个变量,不能赋给constfinal names2 = const [name2, 'Allen', 'Brian']; // 正确const names3 = ['A','B','C']; // 正确。const names4 = const ['A', 'B', 'C']; // 正确。print(names3[1]);print(names4[1]);
}
const的规范化:
对于任何给定的const值,无论const表达式被计算多少次,都将创建并重用单个const对象。
getConst() => const [1, 2];
main() { var a = getConst(); var b = getConst(); print(a === b); // true
}
常量构造函数
特点
- 包含常量构造函数的类所有的成员变量都应该使用final;
有构造函数不表示该类的所有实例都是常量,换而言之,使用const修饰的构造方法具备返回常量实例的能力,但不表示一定返回常量实例。而不用const修饰的构造函数绝对不具有返回常量实例的能力(直接报错)
常量构造函数
栗子
Dart教程(三):类的定义和使用相关推荐
- 【Python基础教程】类的定义和使用
哈喽兄弟们,今天咱们分享一下类的定义和使用. 文章目录 1.定义类 2.创建类的实例 3."魔术"方法--_ init () 4.创建类的成员并访问 4.1.创建实例方法并访问 4 ...
- Java实验实现一个circle类,java实验报告-类的定义.doc
java实验报告-类的定义 南京理工大学泰州科技学院 实验报告书 课程名称: <JAVA面向对象程序设计> 实验题目: 实验三 类的定义 班 级: 09计算机(2) 学 号: 090903 ...
- javascript基础教程_JavaScript基础教程(九)对象、类的定义与使用
对象.类的定义与使用 对象与类是面向对象程序设计语言教学过程中不可避免需要讲解的内容之一.很多人将两者混为一谈,简单认为对象就是类,类就是对象.实际上深入分析的话,对象与类的区别还是较为明显的.本文主 ...
- java设计一个立方体类box_实例1: 设计一个立方体类Box,定义三个属性,分别是长,宽,高。定义二个方法,分别计算并输出立方体的体积和表面积。_学小易找答案...
[填空题]表达式 list(filter(lambda x:x>2, [0,1,2,3,0,0])) 的值为 _________ . [填空题]表达式 len(' 中国 '.encode('ut ...
- JAVA创建一个Box类(长方体),在Box类中定义三个变量,分别表示长方体的长(length)、宽(width)和高(heigth)
编程创建一个Box类(长方体),在Box类中定义三个变量,分别表示长方体的长(length).宽(width)和高(heigth),再定义一个方法void setBox(int l, int w, i ...
- 《JAVA》编程创建一个Box类(长方体),在Box类中定义三个变量
问题:编程创建一个Box类(长方体),在Box类中定义三个变量,分别表示长方体的长(length).宽(width)和高(heigth),再定义一个方法void setBox(int l, int w ...
- Qt (高仿Visio)流程图组件开发(三) 图元基类如何定义,流程图多种图元类型实现
文章目录 本系列目录 前言 一.图元基类的定义 1.图元信息基类结构体 2.图元位置 3.父子对象关系 二.自定义图元实现 1.自定义图元基类(FlowchartGraphicsItem)与Qt原生图 ...
- Java练习题 类 先创建一个Point类,然后定义Trianglele类。在Trianglele类中定义三个Point的实体来表示一个三角形的三个点,然后定义两个方法求三角形的周长、面积。
先创建一个Point类,然后定义Trianglele类. 在Trianglele类中定义三个Point的实体来表示一个三角形的三个点,再定义构造方法对这三个点进行初始化,然后定义两个方法求三角形的周长 ...
- java定义三角类_Java先创建一个point类然后定义trianglete类,在trianglete类中定义三个point的实体表示三角形的三个点。...
Java先创建一个point类然后定义trianglete类,在trianglete类中定义三个point的实体表示三角形的三个点. 关注:197 答案:1 mip版 解决时间 2021-01-3 ...
- 【Dart 教程系列第 28 篇】Dart中的 Map 和实体类的相互转换
这是[Dart 教程系列第 28 篇],如果觉得有用的话,欢迎关注专栏. 首先声明一个实体类 class People {String name; // 姓名String area; // 地区Str ...
最新文章
- 讲你肯定能懂的机器学习多维极值求解
- java 接口 泛型示例,java泛型接口实现示例
- python实现中文字符繁体和简体中文转换
- [51nod] 1301 集合异或和
- 解聘!“双一流”教授被通报批评
- Linux命令使用练习三
- ubuntu修改登陆用户名称_MySQL对于相同名称用户但host不同的登陆选择
- 第1章 《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)周志明》目录
- AWGN信道中BPSK调制的定点仿真性能_Simulink实现
- iPhone打开应用显示未受信任企业级开发者无法打开
- matlab 程序文件,MATLAB程序文件
- 学习秦始皇 五招打造无敌团队
- 如何寻求知识产权的刑事救济
- 小米2S手机开启开发者选项
- 监听settings
- table表头行固定
- NLP学习(十)-情感分析技术及案例实现-Python3实现
- 找优秀项目很好的网站推荐
- R语言 常用函数总结
- php memcache increment,memcache的increment用法