上一篇文章Dart 知识点 - 面向对象基础中,我们已经初步了解了类的构造方法,本文,我们详细来学习一下构造函数。
推荐使用线上编辑器 dartpad.cn 进行学习,测试~
构造函数是类中的特殊方法。Dart
中的每个类都有一个默认的构造方法,并且可以有一个以上的构造方法。
声明和使用构造方法
通过创建一个和类名一样的方法,来声明一个构造函数,在初始化对象的时候,自动调用。比如上文所举例:
代码语言:javascript复制void main() {
var person = new Person('Jimmy', 100);
person.sayHi(); // Hello Jimmy.
}
class Person {
String name = '';
double height = 0.0;
// 构造函数
Person(this.name, this.height); // 初始化对象,默认调用构造方法
sayHi() {
print('Hello ' this.name '.');
}
}
我们还可以通过 ClassName.identifier
方式来调用,比如:
void main() {
var person = Person.fromJson({
'name': 'Jimmy',
'height': 100,
});
person.sayHi(); // Hello Jimmy.
print(person.toJson()); // {name: Jimmy, height: 100}
}
class Person {
String name = '';
double height = 0.0;
/*
* ClassName.identifier 形式构造方法
* */
Person.fromJson(Map<String, dynamic> json) {
name = json['name'];
height = json['height'];
}
// 将当前对象转化成 Json 数据
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = Map<String, dynamic>();
data['name'] = this.name;
data['height'] = this.height;
return data;
}
sayHi() {
print('Hello ' this.name '.');
}
}
命名构造方法
Dart
中不支持构造方法的重载,但是我们可以使用命名构造方法实现多个构造方法让代码更加清晰。命名构造方法格式:类名.方法名
,比如下面