推荐答案
在 Dart 中,重写(override)父类的方法需要使用 @override 注解,并确保子类中的方法与父类中的方法具有相同的签名(即方法名、参数列表和返回类型必须一致)。
// www.javascriptcn.com code example
class Parent {
void greet() {
print('Hello from Parent');
}
}
class Child extends Parent {
@override
void greet() {
print('Hello from Child');
}
}
void main() {
Child child = Child();
child.greet(); // 输出: Hello from Child
}本题详细解读
1. 方法重写的基本概念
在面向对象编程中,方法重写(Override)是指子类重新定义父类中已经存在的方法。通过重写,子类可以提供与父类不同的实现。
2. @override 注解的作用
在 Dart 中,@override 注解用于明确表示某个方法是重写了父类的方法。虽然 Dart 编译器在没有 @override 注解的情况下也能识别方法重写,但使用该注解可以提高代码的可读性,并且在编译时可以帮助捕获潜在的错误(例如拼写错误或签名不匹配)。
3. 方法签名的要求
重写方法时,子类中的方法必须与父类中的方法具有相同的签名。这意味着:
- 方法名必须相同。
- 参数列表必须相同(包括参数的类型和数量)。
- 返回类型必须相同或兼容(子类方法的返回类型可以是父类方法返回类型的子类型)。
4. 示例代码解析
Parent类定义了一个greet方法。Child类继承自Parent类,并重写了greet方法。- 在
main函数中,创建了一个Child类的实例,并调用greet方法,输出结果为Hello from Child,表明子类的方法重写成功。
5. 注意事项
- 如果子类中的方法与父类中的方法签名不一致,编译器会报错。
- 如果父类中的方法是
final或private(以_开头),则不能被子类重写。 - 使用
@override注解是一个良好的编程习惯,有助于代码维护和团队协作。