Dart 教程 目录

Dart 类声明

在 Dart 中,类是一种用于创建对象的蓝图。通过定义类,你可以创建具有相同属性和行为的对象集合。本章将详细介绍如何声明和使用 Dart 中的类。

类的基本结构

定义一个类

要定义一个类,可以使用 class 关键字。下面是一个简单的类定义示例:

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

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

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

在这个例子中,我们定义了一个名为 Person 的类,它有两个属性:nameage。此外,我们还定义了一个构造函数 Person 和一个方法 introduce

访问修饰符

Dart 没有像 Java 或 C++ 那样的显式访问修饰符(如 public, private, protected)。但是,Dart 提供了一种通过下划线 _ 来模拟私有属性和方法的方式。

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

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

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

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

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

默认构造函数

如果你不定义任何构造函数,Dart 会自动为你提供一个默认构造函数。

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

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

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

命名构造函数

除了默认构造函数外,你还可以定义命名构造函数,这使得创建类的实例更加灵活。

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

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

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

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

工厂构造函数

工厂构造函数允许你在运行时决定返回的对象类型,或者返回缓存的对象实例。

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

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

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

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

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

初始化列表

初始化列表允许你在构造函数体之前执行一些初始化操作,例如调用超类的构造函数或初始化常量字段。

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

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

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

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

静态成员

静态成员属于类而不是类的实例。它们可以通过类名直接访问,而无需创建类的实例。

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

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

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

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

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

抽象类

抽象类不能被实例化。它们通常用于定义一组子类应该实现的方法。

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

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

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

接口

Dart 不直接支持接口,但你可以通过抽象类或使用 mixin 来实现类似的功能。

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

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

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

继承

Dart 支持单继承,这意味着每个类只能有一个父类。

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

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

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

覆写方法

子类可以覆写超类中的方法。

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

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

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

调用超类方法

有时需要调用超类的方法。你可以使用 super 关键字来实现这一点。

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

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

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

常量构造函数

如果你想创建不可变对象,可以使用常量构造函数。

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

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

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

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

泛型类

泛型类允许你定义可以在多种数据类型之间重用的类。

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

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

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

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

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

使用泛型类

你可以使用泛型类来处理不同类型的数据,并在运行时确定类型。

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

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

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

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

组合类

组合是一种设计模式,通过组合现有类来构建新的功能。

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

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

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

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

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

以上内容详细介绍了 Dart 中类的声明及其各种特性。希望这些信息对你理解和使用 Dart 类有所帮助。

纠错
反馈