看看代码可以很好的分析 setter ,getter 和普通的函数有什么区别
void main() {
car a = new car("奔驰", 12);
print(a.name);
a.age = 100;
print(a.age);
a.setname = "宝马"; // 调用 setter
print(a.getage); // 调用getter
a.setter("雷克萨斯");
a.getter();
}
class car {
String name;
int age;
car(this.name, this.age);
// 这是一个setter
void set setname(String name) {
// 这个 void 可以省略
this.name = name;
}
//这个是一个getter
int get getage => this.age;
// 这是一个函数
void setter(String name) {
this.name = name;
}
int getter() {
return this.age;
}
}
这段代码展示了在Dart语言中,setter、getter和普通函数之间的区别。
- Setter:
Setter是一个特殊的方法,用于设置类的私有变量值。在给定的代码中,set setname(String name)
是一个setter,它允许外部代码修改name
变量的值。在setter方法内部,this.name = name;
这行代码实际上就是修改了类的私有变量name
的值。
注意:setter的命名规则是 set + 变量名
。在setter方法中,第一个参数就是你要设置的变量的名字。
2. Getter:
Getter是一个特殊的方法,用于获取类的私有变量的值。在给定的代码中,int get getage => this.age;
是一个getter,它允许外部代码获取age
变量的值。与setter不同,getter方法没有参数。getter方法的命名规则是 get + 变量名
。在getter方法中,你可以直接返回私有变量的值。
3. 普通函数:
普通函数用于执行某些操作,而不是直接访问或修改类的私有变量。在给定的代码中,void setter(String name)
和 int getter()
是普通函数。它们可以接受参数(setter)或返回值(getter)。这些函数并不直接与类的私有变量交互,而是执行一些其他的操作。
总之,setter、getter和普通函数的主要区别在于它们的用途和如何与类的私有变量交互。Setter和getter用于直接访问和修改私有变量,而普通函数则用于执行其他操作。
也就是说如果 name 和 age 变成私有变量的话,使用 setter 和 getter 更加合适