1 类的声明
  • 使用class声明一个类
  • 使用new 创建一个对象,new可省略
  • dark文件名和声明的类名可以不一样,与java不同
void main() {
var function = Person();
var function1 = new Person();
function.name;
} class Person {
String name;
}
2 属性与方法
  • 属性默认生成getter和setter,通过.访问
  • 方法不能重载
3 类及成员可见性
  • dark中的可见性以library(库)为单位
  • 默认情况下,一个dark文件就是一个库
  • 使用_ 表示库中类及成员的私有性,只能在当前库中访问类。也可以用_表示私有属性。
  • 使用import导入库

4 定义一个类和私有属性

void main() {
Person person = Person();
} class Person {
String _weight;
}
在其他库中import库,访问不了私有属性 _weight
 
5 计算属性 get关键字
void main() {
Person person = Person();
person.salary = 3000;
person.month = 12;
print(person.yearSalary);
} class Person {
String weight;
int salary;
int month;
//计算属性
num get yearSalary => (salary * month);
}
 
6 构造方法
  • 存在默认的构造方法
  • 如果自定义构造方法,则默认构造方法无效
  • 语法糖形式定义构造方法,并给属性赋值
  • 构造方法不能重载
命名构造方法
可以定义多个构造方法,使用类名.方法的形式实现
class Person {
int salary;
int month;
Person(this.salary,this.month);//构造方法并赋值
Person.withSalary(this.salary);//命名构造方法
num get yearSalary => (salary * month);//计算属性
}

7 工厂构造方法

class Fruit {
final String name;
static final Map<String, Fruit> _cache = <String, Fruit>{}; //工厂构造方法,返回一个对象
factory Fruit(String name) {
if (_cache.containsKey(name)) {
return _cache[name];
} else {
final fruit = Fruit._internal(name);
_cache[name] = fruit;
return fruit;
}
} Fruit._internal(this.name); //私有构造
}

8 静态成员

  • 使用static关键字实现类级别的变量和函数
  • 类中的常量需要使用static const声明

9 对象操作符

  • 条件成员访问 ?.  如果对象或者属性为空,则不调用对象或者属性
  • 类型转换 as
  • 是否指定类型 is is! (类似java instance of )
  • 级联操作.. (类似java build模式 返回当前对象 )
void main() {
Person person = Person(); if(person is Person){
person..age = 10
..salary = 100;
person?.work();
}
} class Person {
int age;
int salary;
work() {
print("work...");
}
}

最新文章

  1. 第12章 Java字符串
  2. Myeclipse的使用
  3. 【WP 8.1开发】电子罗盘
  4. iOS:高德地图的使用
  5. 关于Reflow回流
  6. MPEG2/TS 包结构简述
  7. RDLC系列之六 打印纸张的大小(未解决)
  8. 一步步学习JSON
  9. sql 理解视图
  10. NYOJ10,skiing
  11. 【bfs】 poj 3984 maze 队列存储
  12. Linux的vi常用命令详解
  13. 如何从两个List中筛选出相同的值
  14. 5分钟spark streaming实践之 与kafka联姻
  15. 二、redis命令简单使用(不区分大小写)
  16. tqdm介绍及常用方法
  17. Python序列化操作与反序列操作
  18. 【洛谷P2261】余数求和
  19. R中的空间数据分析
  20. 转帖:向开源项目贡献源码(以 Orchard 为例)

热门文章

  1. ubuntu终端安装最新ss
  2. linux 之实现定时任务
  3. 配置好ssh互信还需要密码登录
  4. jieba:我虽然结巴,但是我会分词啊
  5. 架构师成长之路5.7-Saltstack数据系统
  6. Java语言基础(1)
  7. mongodb 3.0 WT 引擎性能测试(转载)
  8. 关于数字加载的动画 jquery
  9. DataGridView增加右键取消操作
  10. 简单加密 DEncrypt