Dart 实现/扩展抽象类

Dav*_*ave 2 dart

implements对于抽象类,和之间有区别吗extends?我应该使用哪一个?在 Java 中,您可以使用实现来实现接口,但我发现 dart 没有接口,并且实现/扩展都可以工作。如果我想为我的 api 方法声明抽象类,我应该使用implements还是extends?

void main() {
  User user = new User();
  user.printName();
}

abstract class Profile {
  String printName();
}

class User extends Profile {
  @override
  String printName() {
    print("I work!!");
    return "Test";
  }
}

Run Code Online (Sandbox Code Playgroud)

jul*_*101 12

Dart 中的所有类都可以用作接口。类存在abstract意味着您无法创建该类的实例,因为它的某些成员可能未实现。

extends意味着您采用类已有的代码,然后在此基础上构建一个类。因此,如果您不重写方法,则可以从扩展的类中获取该方法。您只能从一门课程延伸。

implements意味着您只想采用类的接口,但要带有您自己的所有成员的实现。因此,您的类最终与另一个类兼容,但不附带任何其他类的实现。您可以实现多个类。

您没有提到的第三个选项是,mixin它允许我们实现多个mixin定义的类并将它们放入我们自己的类中。您可以在这里阅读有关它们的更多信息:https ://dart.dev/guides/language/language-tour#adding-features-to-a-class-mixins