飞镖接球手和二传手

2025-06-10

飞镖接球手和二传手

先决条件

你需要具备以下基本知识

  1. 面向对象编程

Getter 和 Setter 是提供对对象属性进行读写访问的特殊方法。类的每个实例变量都有一个隐式的 getter,如果需要,还可以有一个 setter。在 Dart 中,您可以更进一步,实现自己的 getter 和 setter。如果您有过面向对象编程的经验,那么您会感觉非常熟悉。让我们开始吧。

在 OOP 中,类充当该类实例(对象)的抽象数据类型 (ADT)。在 Dart 中也是如此。类的基本语法如下:

class className {
 fields;
 getters/setters
 constructor
 methods/functions
}
Enter fullscreen mode Exit fullscreen mode

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,});
}
Enter fullscreen mode Exit fullscreen mode

这里的 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

}
Enter fullscreen mode Exit fullscreen mode

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,});
}
Enter fullscreen mode Exit fullscreen mode

这涵盖了 Dart 中 getter 和 setter 的基本用法。关于类还有很多内容需要学习。我会在以后的文章中详细介绍。另外,请注意构造函数中命名参数的使用。我还会在以后的文章中介绍这些参数以及其他传递参数的方法。

鏂囩珷鏉ユ簮锛�https://dev.to/newtonmunene_yg/dart-getters-and-setters-1c8f
PREV
你如何做笔记?
NEXT
TypeScript 入门