类与对象
使用
class
声明一个类使用关键字
new
创建一个对象new
可省略所有对象都继承于
Object
类
属性与方法
属性会默认生成
getter
和setter
方法使用
final
声明的属性只有getter
(只读)属性和方法通过
.
访问方法不能被重载
1 | e.g. |
类及成员可见性
Dart
中的可见性以library
(库)为单位默认情况下 每个
Dart
文件就是一个库使用
import
导入库使用
_
表示库的私有性
计算属性
顾名思义,计算属性的值是通过计算而来,本身不存储值
计算属性赋值,其实是通过计算转换到其它实例变量
1 | e.g. |
构造方法
如果没有自定义构造方法,则会有个默认的构造方法
如果存在自定义构造方法,则默认构造方法无效
1 | e.g. |
其中自定义构造方法 可使用语法糖 改写成如下:
1 | class Person { |
利用语法糖可以对以 final 声明的值 赋值
1 | class Person { |
- 构造方法不能重载
如果要在一个类里面 添加多个构造方法怎么办呢?
这就要用到命名构造方法啦
命名构造方法
使用命名构造方法,可以实现多个构造方法
使用
类名.方法
的形式实现
1 | e.g. |
常量构造方法
如果类是不可变状态,可以把对象定义为编译时常量
使用
const
声明构造方法,并且所有的变量都为final
使用
const
声明对象,可省略
1 | e.g. |
工厂构造方法
工厂构造方法类似于设计模式的工厂模式
在构造方法前添加关键字
factory
实现一个工厂构造方法在工厂构造方法中可返回对象
初始化列表
初始化列表会在构造方法体执行之前执行
使用逗号分隔初始化表达式
初始化列表常用于设置
final
变量的值
1 | e.g. |
静态成员
使用
static
关键字来实现类级别的变量和函数静态成员不能访问非静态成员,非静态成员可以访问静态成员
类中的常量需要使用
static const
声明
1 | e.g. |
对象操作符
- 条件访问
?.
1 | e.g. |
- 类型转换
as
1 | e.g. |
- 是否制定类型:
is
,is!
1 | e.g. |
- 级联操作:
..
1 | e.g. |
对象 call 方法
- 如果类实现了
call()
方法,则该类的对象可以作为方法使用
1 | e.g. |
可以了解下 call
方法 实际项目中不建议使用