飞镖接球手和二传手
先决条件
你需要具备以下基本知识
- 镖
- 面向对象编程
Getter 和 Setter 是提供对对象属性进行读写访问的特殊方法。类的每个实例变量都有一个隐式的 getter,如果需要,还可以有一个 setter。在 Dart 中,您可以更进一步,实现自己的 getter 和 setter。如果您有过面向对象编程的经验,那么您会感觉非常熟悉。让我们开始吧。
在 OOP 中,类充当该类实例(对象)的抽象数据类型 (ADT)。在 Dart 中也是如此。类的基本语法如下:
class className {
fields;
getters/setters
constructor
methods/functions
}
getter 和 setter 也可以放在构造函数之后。现在让我们创建一个类并实例化它。
class Vehicle {
String make;
String model;
int manufactureYear;
int vehicleAge;
String color;
int get age {
return vehicleAge;
}
void set age(int currentYear) {
vehicleAge = currentYear - manufactureYear;
}
// We can also eliminate the setter and just use a getter.
//int get age {
// return DateTime.now().year - manufactureYear;
//}
Vehicle({this.make,this.model,this.manufactureYear,this.color,});
}
这里的 Age 既是 getter,也是 setter。我们来看看如何使用它。
void main() {
Vehicle car =
Vehicle(make:"Honda",model:"Civic",manufactureYear:2010,color:"red");
print(car.make); // output - Honda
print(car.model); // output - Civic
car.age = 2019;
print(car.age); // output - 9
}
Map
我最喜欢使用 getter 的方法之一是从对象中获取。
void main() {
Vehicle car = Vehicle(make:"Honda",model:"Civic",manufactureYear:2010,color:"red");
print(car.map); // output - {make: Honda, model: Civic, manufactureYear: 2010, color: red}
}
class Vehicle {
String make;
String model;
int manufactureYear;
int vehicleAge;
String color;
Map<String,dynamic> get map {
return {
"make": make,
"model": model,
"manufactureYear":manufactureYear,
"color": color,
};
}
int get age {
return DateTime.now().year - manufactureYear;
}
void set age(int currentYear) {
vehicleAge = currentYear - manufactureYear;
}
Vehicle({this.make,this.model,this.manufactureYear,this.color,});
}
这涵盖了 Dart 中 getter 和 setter 的基本用法。关于类还有很多内容需要学习。我会在以后的文章中详细介绍。另外,请注意构造函数中命名参数的使用。我还会在以后的文章中介绍这些参数以及其他传递参数的方法。
鏂囩珷鏉ユ簮锛�https://dev.to/newtonmunene_yg/dart-getters-and-setters-1c8f