TypeScript 中如何使用类的实例成员

阅读时长 8 分钟读完

TypeScript 中如何使用类的实例成员

在 TypeScript 中,我们可以使用类的实例成员来封装和组织代码,使其更加易于维护和扩展。本文将介绍 TypeScirpt 中如何使用类的实例成员,并提供详细的示例代码以及指导意义,帮助读者更好地理解和使用此技术。

类的实例成员是什么

类的实例成员是指在类中定义的不属于静态成员的属性和方法。它们只能在类实例化后通过实例访问,而不能通过类直接访问。类的实例成员用于封装类的状态和行为,并且每个实例之间的状态是相互独立的。

实例成员的定义和访问

定义实例成员使用的关键字是 public,如果不加,则默认为 public。例如:

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

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

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

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

通过实例化一个 Person 对象,我们可以访问 Person 类中定义的实例成员。在构造函数中,我们将传入的参数 nameage 分别赋值给了 Person 类中的实例成员 nameage。在 sayHello 方法中,我们通过 this.namethis.age 访问了实例成员中的数据。通过实例方法调用 person.sayHello(),我们可以打印出该 Person 对象的信息。

实例成员的访问控制

在 TypeScript 中,我们可以通过访问控制修饰符来限制实例成员的访问权限,包括 publicprivateprotected

public

public 是默认的访问控制修饰符。当声明实例成员时,如果没有显示地使用访问修饰符,那么该实例成员默认为 public。例如:

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

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

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

在这个例子中,nameage 都是默认为 public 的实例成员,因此它们可以从 Person 的实例中访问。

private

private 访问修饰符使得实例成员只能在类的内部访问,而不能从类的外部访问。例如:

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

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

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

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

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

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

在这个例子中,我们将 age 定义为 private,这意味着它只能从 Person 类中的其他方法访问,而不能从外部访问。如果我们在类外部直接尝试访问 age,就会导致编译错误。在 changeAge 方法中,我们可以修改 age 属性,因为该方法在 Person 类的内部。

protected

protected 访问修饰符与 private 的不同之处在于,它使得实例成员可以在类和其子类中访问和修改,而不能在类的实例或类的外部访问。例如:

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

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

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

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

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

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

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

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

在这个例子中,我们将 age 定义为 protected,这意味着它可以在 Person 类及其子类中访问和修改。在 Student 类中,我们重写了 sayHello 方法并访问了 nameage 实例成员。在 changeGrade 方法中,我们可以修改 Student 实例的 grade 属性,因为该方法在 Student 类中。

总结

在 TypeScript 中,我们可以使用类的实例成员来封装和组织代码,实例成员的访问控制修饰符能够限制实例成员的访问权限。通过掌握实例成员的定义和访问、实例成员的访问控制,读者可以更好地理解和使用 TypeScript 中类的实例成员。最后,我们在这里提供一个类的实例成员的完整示例代码供读者参考和学习。

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

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

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

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

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

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

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

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

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6530ed807d4982a6eb27f2d3

纠错
反馈