Dart 教程 目录

Dart 语言库封装(可见性)

可见性概述

在 Dart 中,可见性控制了类、方法、变量和其他实体的访问权限。通过合理使用可见性,可以保护数据不被意外修改,同时确保代码模块化和易于维护。

成员可见性

私有成员

私有成员只能在声明它们的库内部访问。在 Dart 中,通过在标识符前添加下划线 _ 来表示私有成员。例如:

在上面的例子中,_name_printName 都是私有的,只能在 Person 类所在的库中访问。

公有成员

公有成员可以在任何地方访问。在 Dart 中,默认情况下,如果没有使用下划线前缀,那么成员就是公有的。例如:

在这个例子中,nameprintName 方法都是公有的,可以在任何地方访问。

库可见性

Dart 支持将代码组织成库,并且可以控制库之间的可见性。一个库可以导出其他库中的成员,使得这些成员对其他库可见。例如:

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

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

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

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

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

在这个例子中,main.dart 导入了 person.dart 库,并只暴露了 Person 类。因此,Person 类是可见的,而 Person 类中的私有成员是不可见的。

库前缀

为了防止命名冲突,可以使用库前缀来引用不同的库。例如:

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

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

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

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

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

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

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

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

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

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

在这个例子中,我们为 person.dartaddress.dart 分别定义了前缀 pa。这样,即使两个库中有相同名字的类或方法,也可以通过前缀来区分。

私有库成员

虽然库本身不能声明为私有的,但可以将库中的某些成员声明为私有的。例如:

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

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

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

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

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

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

在这个例子中,Person 类中的 _printPrivateMessage 方法是私有的,因此在 main.dart 中无法访问它。

总结

可见性是 Dart 中非常重要的概念,它帮助开发者管理代码结构和数据安全性。通过合理使用私有成员和库前缀,可以有效地组织和保护代码。这不仅有助于提高代码的质量,还能让团队协作更加高效。

纠错
反馈