Menu
CoddyTech

实例变量

本课属于 Coddy Dart 学习旅程的“面向对象编程”单元。第 7 课,共 110 课。

实例变量是在类内部声明的变量。由该类创建的每个对象都会获得这些变量各自的副本,且与所有其他对象相互独立。

声明实例变量时,需要指定类型,也可以选择设置默认值:

class Student {
  String school = 'Dart Academy'; // 有默认值
  String name = '';               // 默认值为空字符串
  int age = 0;                    // 默认值为零
}

带默认值的变量在每个新对象创建时都会从相同的值开始。像 name 和 age 这样的变量,在你设置它们之前都是空值或 0。

使用带有 this 的方法来设置对象的各项数据:

class Student {
  String school = 'Dart Academy';
  String name = '';
  int age = 0;

  void setInfo(String name, int age) {
    this.name = name; // this.name = 实例变量
    this.age = age;   // this.age  = 实例变量
  }
}

创建学生并分配他们的数据:

Student student1 = Student();
Student student2 = Student();

student1.setInfo('Alice', 20);
student2.setInfo('Bob', 22);

使用点运算符访问实例变量:

print('${student1.name} is ${student1.age} at ${student1.school}');
print('${student2.name} is ${student2.age} at ${student2.school}');

输出:

Alice is 20 at Dart Academy
Bob is 22 at Dart Academy

注意,两个对象的 school 相同,因为它有默认值;而 name 和 age 对每个对象来说都不相同,因为它们是通过 setInfo 分别设置的。

challenge icon

挑战

简单

完成 student.dart 中的 Student 类:

  1. 声明一个 String school 实例变量,默认值为 'Dart Academy'
  2. 声明一个 String name 实例变量,默认值为 ''
  3. 声明一个 int age 实例变量,默认值为 0
  4. 添加一个 setInfo 方法,接收 String name 和 int age 作为参数,并使用 this 将它们设置到对象上

driver.dart 文件会通过创建两个学生并打印他们的信息来测试你的类(已锁定)。

亲手试试

import 'student.dart';

void main() {
  Student student1 = Student();
  Student student2 = Student();

  student1.setInfo('Alice', 20);
  student2.setInfo('Bob', 22);

  print('${student1.name} is ${student1.age} at ${student1.school}');
  print('${student2.name} is ${student2.age} at ${student2.school}');
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

面向对象编程中的所有课

自己练习: Dart 在线编译器