本文已参与「新人创作礼」活动,一起开启掘金创作之路。
Dart 创建自定义类使用类
Dart是一门使用类和单继承的面向对象语言,所有的对象都是类的实例,并且所有的类都是Object的子类
// 定义一个类
class Person {
String name = "张三";
int age = 23;
void getInfo() {
// 写法一
print("$name ------ $age");
// 写法二
print("${this.name} --- ${this.age}");
}
void setInfo(int age) {
this.age = age;
}
}
void main() {
// 实例化
// 写法一
var p1 = new Person();
print(p1.name); // 张三
p1.getInfo(); // 张三 ------ 23 张三 --- 23
// 写法二
Person p2 = new Person();
print(p2.name); // 张三
p1.setInfo(28);
p1.getInfo(); // 张三 ------ 28 张三 --- 28
}
Dart 自定义类的默认构造函数
指定参数
class Person {
String name = "张三";
int age = 20;
// 构造函数
Person() {
print("这是构造函数里的内容 这个方法在实例化的时候触发");
}
void printInfo() {
print("${this.name}------${this.age}");
}
}
void main() {
Person p1 = new Person(); // 这是构造函数里的内容 这个方法在实例化的时候触发
}
自定义参数
最新版本的dart中需要初始化不可为 null 的实例字段
如果不初始化的话需要在属性前面加上 late
class Person {
late String name;
late int age;
// 默认构造函数 等同于下面简写
// Person(String name, int age) {
// this.name = name;
// this.age = age;
// }
// 默认构造函数简写
Person(this.name, this.age);
void printInfo() {
print("${this.name} --- ${this.age}");
}
}
void main() {
Person p1 = new Person('张三', 20);
p1.printInfo(); // 张三 --- 20
Person p2 = new Person('李四', 25);
p2.printInfo(); // 李四 --- 25
}
Dart 自定义类的命名构造函数
构造函数可以写多个
class Person {
late String name;
late int age;
// 默认构造函数简写 只能定义一个
Person(this.name, this.age);
// 命名构造函数 可以定义多个
Person.now() {
print('我是命名构造函数');
}
Person.setInfo(String name, int age) {
this.name = name;
this.age = age;
}
void printInfo() {
print("${this.name} --- ${this.age}");
}
}
void main() {
// DateTime是一个类 now是它的命名
var d = new DateTime.now(); // 实例化DateTime调用它的命名构造函数
print(d);
// 调用默认构造函数 默认实例化类的时候调用的是 默认构造函数
Person p1 = new Person('张三', 20);
// 默认实例化类的时候调用的是 命名构造函数
Person p2 = new Person.now();
Person p3 = new Person.setInfo('李四', 30);
p3.printInfo();
}