上篇中我们学习了 Flutter 必备语言 Dart 教程 02 – 控制流,异常,现在我们继续学习 Dart 中的类和泛型。
Class
以下是在 Dart 中声明一个简单类,并创建它的实例的方法。
向类中添加实例变量,以及构造函数
Dart 提供了一种构造函数初始化的简洁语法。如下所示:
如您所见,我们编写了一行构造函数,第一个参数值将设置为 name,第二个参数值将设置为 age。现在我们就不用写 this.name = name 这样的无聊语句了。
命名的构造函数
Dart 提供了另一种定义构造函数的方法,称为命名构造函数。
如您所见,我们为构造函数提供了一个名称。这样我们在调用不同构造函数时,语义会更加清晰明了,不用根据参数去判断了。
继承
您可以使用 extend 关键字在 Dart 中继承其他类。
这里我们的 Pug 类继承自 Dog 类,并使用 super 关键字,传入适当的参数,调用 Dog 类的构造函数。
您还可以在冒号(:) 之后使用关键字 this 来调用同一类中的其他构造函数。
冒号(:)后边可以做一些初始化操作,比如调用构造函数、实例变量赋值等。
这里我们创建两个命名构造函数,它们只有 name 参数,并调用默认的 Pug 构造函数。
方法
类中的方法与 Dart 中定义普通方法类似。
覆盖方法也很简单。
Setter
默认情况下,您在类中定义的任何变量,只需引用对象上的变量名称即可访问,例如 dog.name,对象变量也可以直接赋值。但有时你想自定义属性的 getter 和 setter,在 Dart 中你可以使用 get 和 set 关键字来自定义 getter 和 setter。
现在类属性仍然可见并且可以随意更改,接下来我们把类属性设为私有。
控制可访问性
默认情况下,您在类中定义的每个属性和方法都是公共的,可以直接访问。在 Dart 中,您可以通过在其名称前添加“_”来使任何变量或方法变为私有。让我们将 name 属性设为私有。
抽象类和方法
您可以使用 abstract 关键字,在 Dart 中创建一个抽象类。
您只需要在类声明之前提供 abstract 关键字。对于方法,只需提供签名并省略实现。
静态方法
要使字段 / 方法静态,只需在声明之前,添加关键字 static。
枚举
Dart 支持枚举,并像其他语言一样使用。如果你来自 Java 语言,会很熟悉它们。
泛型
Dart 全面支持泛型。假设您正在编写一个只保存数据的类,并且您希望它能够保存任何类型的数据。以下是使用泛型编写该类的方法。
相关文章:
Flutter 必备语言 Dart 教程 01 – 变量,类型,函数
Flutter 必备语言 Dart 教程 02 – 控制流,异常