-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path11_类的构造函数.dart
59 lines (50 loc) · 1.45 KB
/
11_类的构造函数.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
main(List<String> args) {
final a = Animal(name: "XDEcat", age: 18, type: "猫");
print("${a.name} ${a.age} ${a.type}");
Map<String, dynamic> map = {"name": "XDEcat", "age": 18, "type": "猫"};
final a2 = Animal.fromMap(map);
print(a2);
final r = Rectangle(2, 3);
print(r);
}
class Animal {
String? name;
int? age;
String? type;
// 1.将构造函数里的参数变成命名可选参数
// Animal({required String name, required int age, required String type}) {
// this.name = name;
// this.age = age;
// this.type = type;
// }
// 2.使用更加简洁的形式语法糖来书写
Animal({this.name, this.age, this.type});
// 3.通过传入一个map集合来初始化成员变量的构造函数,这里用到了命名构造函数
Animal.fromMap(Map<String, dynamic> map) {
this.name = map["name"];
this.age = map["age"];
this.type = map["type"];
}
void eating() {
print("${this.name}正在吃东西");
}
@override
String toString() {
return "name:${this.name},age:${this.age},type:${this.type}";
}
}
class Rectangle {
int width; //宽度
int height; // 高度
int area; // 面积
String name; //名字
// 构造函数,并初始化列表area和name
Rectangle(this.width, this.height)
: this.area = width * height,
this.name = "矩形";
@override
String toString() {
// TODO: implement toString
return "width:$width height:$height area:$area name:$name";
}
}