持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第17天,点击查看活动详情
成员变量(属性)
在面向对象的语言中,类都是由成员变量和方法组成的。类中的成员变量在其他编程语言中也被称作是对象的属性,成员变量常用于封装对象中的数据。在 Dart 中,对象通常会把其所需要的数据保存为各种成员变量
公有成员变量和私有成员变量
Dart 中没有 public、protected 和 private 的概念
-
如果成员变量前面没有添加下划线
_,那么这个成员变量为公有成员变量 -
如果成员变量前面添加下划线
_,那么这个成员变量为私有成员变量 -
成员变量
class Student { // 公有成员变量 String? name; // 私有成员变量 String? _city = "beijing"; void sayHI() { print("$name 来自 $_city"); } @override String toString() { return "\n name:$name \n age:$age \n city:$_city"; } } void main(List<String> args) { final stu = Student(); stu.name = "dart"; stu.sayHI(); print(stu); } log: dart 来自 beijing name:dart age:null city:beijing
通过 setter 和 getter 访问成员变量
每一个成员变量都有一对 setter 和 getter 方法,用来读写成员变量
-
关于
setter方法使用关键字
set修饰。关键字set放在方法名前面,将成员变量作为参数传入。需要注意的是方法名和成员变量名字不能相同 -
关于
getter方法使用关键字
get修饰。关键字get放在方法返回类型和方法名之间。需要注意的是方法名和成员变量名字不能相同
class Student {
late String name;
// set 的方法
set setName(String name) {
this.name = name;
}
// get 的方法
String get getName {
return name;
}
}
void main(List<String> args) {
final stu = Student();
// 调用 setter 和 getter 方法
stu.setName = "dart";
print(stu.getName);
}
log:
dart
类级成员变量
类级成员变量属于某一个类的,而不是属于某一个对象实例的。 可以认为所有的对象实例公用这个属性。类级成员用关键字static 定义
class Student {
late String name;
static var grade;
}
void main(List<String> args) {
Student.grade = 3;
print(Student.grade);
}
log:
3