在Flutter中使用@override的目的是什么?

cla*_*ine 11 dart flutter

在flutter文档中,关键字@override在类中使用了很多.我试图寻找意义,但仍然无法理解.这个@override关键字的目的是什么?

注意:我来自JavaScript背景.

Jac*_*ips 17

@override只是指出该函数也是在祖先类中定义的,但是被重新定义为在当前类中执行其他操作.它还用于注释抽象方法的实现.它是可选的,但建议使用,因为它提高了可读性.

注释@override将实例成员标记为覆盖具有相同名称的超类成员.

https://api.dartlang.org/stable/1.24.3/dart-core/override-constant.html

JavaScript也支持@override作为注释,但它必须在注释中.http://usejsdoc.org/tags-override.html.


Man*_*nnu 8

根据文档
,注释@override将实例成员标记为覆盖同名的超类成员。

例子

class A {
  void foo() {
    print("Class A");
  }
}

class B extends A {}

class C extends A {
  @override foo() {
    print("Class C");
  }
}

void main() {
  A a = A();
  B b = B();
  C c = C();
  a.foo();
  b.foo();
  c.foo();
}
Run Code Online (Sandbox Code Playgroud)

输出是:

Class A
Class A
Class C
Run Code Online (Sandbox Code Playgroud)

发生的事情B extends A因此继承了 的所有方法A。因此,当b.foo()调用时,它会调用其父类的方法。

C它有foowithoverride关键字,这意味着它将覆盖foo其父类中的声明。