Dart 教程 目录

Dart getter和setter访问器

在 Dart 中,getter 和 setter 是用于访问和修改对象属性的特殊方法。它们可以让你在读取或设置属性时执行额外的操作,例如数据验证、计算等。

定义 Getter 和 Setter

定义 Getter

Getter 方法用于获取对象的属性值。定义一个 getter 的语法如下:

这里,_myProperty 是私有属性,通过 getter myProperty 来访问它。

定义 Setter

Setter 方法用于设置对象的属性值。定义一个 setter 的语法如下:

-- -------------------- ---- -------
----- ------- -
  -- --
  --- ------------

  -- ------
  --- --- ---------- -- ------------

  -- ------
  --- -------------- ------ -
    ----------- - ------
  -
-

这里,通过 setter myProperty 来设置 _myProperty 的值。

使用 Getter 和 Setter

你可以像使用普通属性一样使用 getter 和 setter。下面是一个例子:

-- -------------------- ---- -------
---- ------ -
  --- --- - ----------

  -- -- ------
  ---------------------- -- --- ----

  -- -- ------
  -------------- - ---
  ---------------------- -- --- --
-

自定义逻辑

除了简单的赋值操作,你还可以在 getter 和 setter 中添加自定义逻辑。例如,你可以在设置属性值时进行数据验证:

-- -------------------- ---- -------
----- ------- -
  --- ------------

  --- --- ---------- -- ------------

  --- -------------- ------ -
    -- ------ - -- -
      ----- -------------------- ---- -- ---------------
    -
    ----------- - ------
  -
-

---- ------ -
  --- --- - ----------
  
  --- -
    -------------- - --- -- ----
  - ----- --- -
    --------- -- --- ----- ---- -- ------------
  -

  -------------- - ---
  ---------------------- -- --- --
-

在这个例子中,如果尝试将 myProperty 设置为负数,则会抛出异常。

复合属性

有时候你可能需要根据其他属性来计算某个属性的值。在这种情况下,你可以使用 getter 来返回这个复合值:

-- -------------------- ---- -------
----- --------- -
  ------ ------
  ------ -------

  --------------------- -------------

  -- ------ ----
  ------ --- ---- -- ----- - -------
-

---- ------ -
  --- ---- - ------------ ---
  ----------------- -- --- ----
-

Getter 和 Setter 的组合

你也可以在同一个类中同时定义 getter 和 setter,以实现更复杂的属性管理逻辑:

-- -------------------- ---- -------
----- ------ -
  ------ ------

  -- ------
  ------ --- ---- -- ------

  -- ------
  --- ----------- ------ -
    -- --------------- -
      ----- ------------------- ------ -- --------
    -
    ----- - ------
  -
-

---- ------ -
  --- ------ - ---------
  
  --- -
    ----------- - --- -- ----
  - ----- --- -
    --------- -- --- ---- ------ -- -----
  -

  ----------- - --------
  ------------------- -- --- -----
-

在这个例子中,通过 getter 和 setter 实现了对 name 属性的安全管理。

总结

通过 getter 和 setter,你可以更加灵活地管理和控制对象的属性。这不仅可以使代码更安全、更易维护,还能帮助你在属性发生变化时执行一些必要的操作。希望本章的内容能够帮助你更好地理解和使用 Dart 中的 getter 和 setter。

纠错
反馈