默认构造函数和带参数构造函数
创建对象时初始化字段
默认构造函数和带参数构造函数 是 CoddyKit 上的免费 Dart Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Dart Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Dart Academy 课程共包含 4 节课。
构造方法的作用
构造方法是一种特殊方法:当您写下类名时,它会创建一个新对象并设置对象的初始状态。🏗️
默认构造方法
如果您完全不编写构造方法,Dart 会免费提供一个默认构造方法。它不接收参数,只创建一个基本对象。
class Dog {}
var d = Dog(); // uses the default constructor带参数的构造方法
添加参数后,调用者就可以预先提供值。带参数的构造方法会将这些值赋给对象字段。
class Dog {
String name;
Dog(this.name);
}参数中的 this 关键字
参数中的简写形式 this.name 表示接收该参数,并将其直接存入同名字段,从而省去一行代码。
class Dog {
String name;
Dog(this.name);
}不使用 this 简写
您也可以在方法体中手动赋值。这里的 this 用于在字段名与参数名冲突时区分二者。
class Dog {
String name;
Dog(String name) {
this.name = name;
}
}创建对象
像调用函数一样调用类,并按顺序传入参数。Dart 会运行构造方法,并将一个准备好的实例交给您。
var d = Dog("Rex");
print(d.name); // Rex按顺序传入多个参数
从左到右列出参数;调用者必须按照相同的位置顺序传入它们。这对于两个或三个含义明确的字段非常方便。
class Point {
int x, y;
Point(this.x, this.y);
}向方法体添加逻辑
字段设置完成后,构造方法的方法体还可以执行额外的初始化操作,例如验证或记录日志。请让这个方法体保持简短且专注。
class Box {
int size;
Box(this.size) {
print("Box made: $size");
}
}构造方法没有返回类型
您不需要写返回类型,也不能返回值。构造方法总是交回新对象,因此只写名称就足够了。
class Cat {
Cat(); // no void, no return
}每个类只能有一个无名构造方法
一个类最多只能有一个无名构造方法。如果需要更多创建对象的方式,接下来就该使用命名构造方法了。
添加构造方法后默认构造方法会消失
一旦您声明了任何构造方法,Dart 就不会再免费提供无参数构造方法。如果仍想进行empty构建,请自行将它添加回来。
class User {
String name;
User(this.name);
User.empty() : name = "";
}快速检查
快速检查默认构造方法和带参数构造方法。
回顾:构建对象
您已经了解了构造方法:免费的默认构造方法、带参数的构造方法、this 简写,以及声明构造方法会移除默认构造方法。接下来将学习命名构造方法。✨
常见问题解答
「默认构造函数和带参数构造函数」课时是免费的吗?
是的 — 「默认构造函数和带参数构造函数」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Dart Academy 课程的其余内容,请升级到 CoddyKit PRO。 Dart Academy 课程共包含 4 节课。
「默认构造函数和带参数构造函数」这节课中我会学到什么?
创建对象时初始化字段 你通过在浏览器中直接运行的动手代码来练习 Dart Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Dart Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Dart Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「默认构造函数和带参数构造函数」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Dart Academy 课中编写并运行代码吗?
能。每节 Dart Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 默认构造函数和带参数构造函数
- 表达明确意图的命名构造函数
- 初始化列表和重定向构造函数
- 工厂构造函数和 const 构造函数