构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。
在 Dart 中,构造函数是与类名称同名的函数;
class Person {
late String name;
late int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
void Say() {
print("My name is ${this.name} and I am ${this.age} years old.");
}
}
void main(List<String> args) {
Person person = new Person("John", 25);
person.Say();
}
Dart 提供了构造函数语法糖来简化构造函数 :
// 可以将
Person(String name, int age) {
this.name = name;
this.age = age;
}
// 简化为
Person(this.name, this.age);
和函数名称参数一样,构造函数也可以为命名参数,被称为命名构造函数。
class Person {
late String name;
late int age;
Person({required this.name, required this.age});
void Say() {
print("My name is ${this.name} and I am ${this.age} years old.");
}
}
void main(List<String> args) {
Person person = new Person(name: "lesscode", age: 20);
person.Say();
}
默认构造函数与类名称相同,命名构造函数可以为类提供多个不同的构造器,语法 :
class 类名称 {
// 普通构造器
与类名称同名();
// 命名构造器
类名称同名.自定义名称();
}
示例
class Person {
String name;
int age;
Person({required this.name, required this.age});
Person.fromJson(Map<String, dynamic> json)
: name = json["name"],
age = json["age"];
void Say() {
print("My name is ${this.name} and I am ${this.age} years old.");
}
}
void main(List<String> args) {
Map<String, dynamic> map = {"name": "John", "age": 25};
Person person = Person.fromJson(map);
person.Say();
}