Dart实现/扩展抽象类

koaltpgm  于 2023-06-19  发布在  其他
关注(0)|答案(2)|浏览(117)

对于抽象类,implementsextends有什么区别吗?我应该用哪一个?在Java中,你可以使用implements for interfaces,但我看到dart没有接口,implements/extends都可以工作。如果我想为我的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";
  }
}
c3frrgcw

c3frrgcw1#

Dart中的所有类都可以用作接口。类是abstract意味着你不能创建该类的示例,因为它的一些成员可能没有实现。
extends意味着你获取一个类已经拥有的代码,然后在此之上构建一个类。所以如果你不重写一个方法,你就从你扩展的类中获取这个方法。只能从一个类扩展。
implements意味着你只需要类的接口,但是你自己实现所有成员。因此,您的类最终与另一个类兼容,但不附带任何其他类的实现。可以实现多个类。
第三个选项,你没有提到,是mixin,它允许我们实现多个mixin定义的类,并将它们放入我们自己的类中。你可以在这里阅读更多关于他们的信息:https://dart.dev/guides/language/language-tour#adding-features-to-a-class-mixins

iugsix8n

iugsix8n2#

另一个定义,可能会帮助你得到的一点..使用extends使class继承(扩展)他的父类,即使你不覆盖父类的属性,你也可以使用父类的属性,除了他自己的属性和方法之外的方法,你还应该验证这个类(孩子)提交了它的父类,并且没有打破父类的限制。你只能继承一个类...其中作为
当你希望类只限于抽象类属性,但你有自己的实现这些属性时,使用实现。use可以使用“,”来实现多个接口,以便在接口之间进行连接。

相关问题