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