Dart 知识点 - 构造方法

2022-09-19 17:49:53 浏览数 (1)

上一篇文章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 方式来调用,比如:

代码语言:javascript复制
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 中不支持构造方法的重载,但是我们可以使用命名构造方法实现多个构造方法让代码更加清晰。命名构造方法格式:类名.方法名,比如下面

0 人点赞