请解释 super 关键字在类继承中的作用

推荐答案

在 TypeScript 中,super 关键字用于在子类中调用父类的构造函数或方法。它主要有以下两种用途:

  1. 调用父类的构造函数:在子类的构造函数中,必须首先调用 super(),以确保父类的构造函数被正确执行。这是 TypeScript 强制要求的,否则会抛出编译错误。

  2. 调用父类的方法:在子类中,可以通过 super.methodName() 的方式调用父类的方法,通常用于扩展或重写父类方法时保留父类的行为。

本题详细解读

1. 调用父类的构造函数

在 TypeScript 中,当一个类继承自另一个类时,子类的构造函数必须调用 super(),以初始化父类的成员。这是因为子类的实例化过程依赖于父类的初始化。

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

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

在上面的例子中,Dog 类继承自 Animal 类。在 Dog 的构造函数中,super(name) 调用了 Animal 的构造函数,确保了 name 属性被正确初始化。

2. 调用父类的方法

super 关键字还可以用于在子类中调用父类的方法。这在子类重写父类方法时非常有用,可以在子类方法中保留父类的行为,同时添加新的逻辑。

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

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

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

在这个例子中,Dog 类重写了 Animal 类的 move 方法。通过 super.move(distance)Dog 类保留了 Animal 类的 move 方法的行为,并在此基础上添加了新的逻辑。

总结

super 关键字在 TypeScript 类继承中扮演着重要角色,它确保了父类的构造函数和方法能够被正确调用,从而实现了类的继承和多态性。

纠错
反馈