Dart 中如何重写 (override) 父类的方法?

推荐答案

在 Dart 中,重写(override)父类的方法需要使用 @override 注解,并确保子类中的方法与父类中的方法具有相同的签名(即方法名、参数列表和返回类型必须一致)。

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

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

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

本题详细解读

1. 方法重写的基本概念

在面向对象编程中,方法重写(Override)是指子类重新定义父类中已经存在的方法。通过重写,子类可以提供与父类不同的实现。

2. @override 注解的作用

在 Dart 中,@override 注解用于明确表示某个方法是重写了父类的方法。虽然 Dart 编译器在没有 @override 注解的情况下也能识别方法重写,但使用该注解可以提高代码的可读性,并且在编译时可以帮助捕获潜在的错误(例如拼写错误或签名不匹配)。

3. 方法签名的要求

重写方法时,子类中的方法必须与父类中的方法具有相同的签名。这意味着:

  • 方法名必须相同。
  • 参数列表必须相同(包括参数的类型和数量)。
  • 返回类型必须相同或兼容(子类方法的返回类型可以是父类方法返回类型的子类型)。

4. 示例代码解析

  • Parent 类定义了一个 greet 方法。
  • Child 类继承自 Parent 类,并重写了 greet 方法。
  • main 函数中,创建了一个 Child 类的实例,并调用 greet 方法,输出结果为 Hello from Child,表明子类的方法重写成功。

5. 注意事项

  • 如果子类中的方法与父类中的方法签名不一致,编译器会报错。
  • 如果父类中的方法是 finalprivate(以 _ 开头),则不能被子类重写。
  • 使用 @override 注解是一个良好的编程习惯,有助于代码维护和团队协作。
纠错
反馈