可以补充下多构造方法相关的知识点吗

来源:4-9 带你走进Flutter中的面向对象(标准构造方法、初始化列表与命名构造方法)

weixin_慕九州3138891

2024-03-09

写回答

1回答

CrazyCodeBoy

2024-03-10

在Dart中,可以为一个类定义多个构造方法,这些构造方法可以有不同的参数列表。通过使用不同的构造方法,可以方便地创建对象,并且可以根据不同的需求初始化对象的状态。

### 基础构造方法

在Dart中,每个类都有一个与类名相同的默认构造方法。如果没有显式地定义构造方法,则类会有一个默认的无参数构造方法。例如:

```dart
class Person {
  String name;
 
  // 默认构造方法
  Person(this.name);
}
```

### 命名构造方法

除了默认构造方法,还可以定义命名构造方法。命名构造方法使用类的名称后跟一个句点(.),然后是构造方法的名称。例如:

```dart
class Person {
  String name;
 
  // 默认构造方法
  Person(this.name);
 
  // 命名构造方法
  Person.fromJson(Map<String, dynamic> json) {
    name = json['name'];
  }
}
```

### 工厂构造方法

工厂构造方法是一种特殊类型的构造方法,它可以返回一个已经存在的实例,或者返回一个新的实例。工厂构造方法使用关键字`factory`来定义。例如:

```dart
class Person {
  String name;
 
  // 默认构造方法
  Person(this.name);
 
  // 工厂构造方法
  factory Person.fromJson(Map<String, dynamic> json) {
    return Person(json['name']);
  }
}
```

### 初始化列表

构造方法可以使用初始化列表来初始化实例变量。初始化列表位于构造方法参数列表之后,用冒号分隔。例如:

```dart
class Person {
  String name;
 
  // 默认构造方法
  Person(this.name);
 
  // 命名构造方法
  Person.fromJson(Map<String, dynamic> json) : name = json['name'];
}
```

### 调用父类构造方法

子类的构造方法可以调用父类的构造方法,使用`super`关键字。例如:

```dart
class Student extends Person {
  int id;
 
  // 子类构造方法
  Student(this.id, String name) : super(name);
}
```

这就是Dart中多构造方法的基本知识。通过使用不同类型的构造方法,可以更灵活地创建和初始化对象。
0
0

慕课甄选-Flutter零基础极速入门到进阶实战

全新Flutter从入门到进阶,实战仿携程网App

661 学习 · 316 问题

查看课程