对于抽象类,implements
和extends
有什么区别吗?我应该用哪一个?在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";
}
}
2条答案
按热度按时间c3frrgcw1#
Dart中的所有类都可以用作接口。类是
abstract
意味着你不能创建该类的示例,因为它的一些成员可能没有实现。extends
意味着你获取一个类已经拥有的代码,然后在此之上构建一个类。所以如果你不重写一个方法,你就从你扩展的类中获取这个方法。只能从一个类扩展。implements
意味着你只需要类的接口,但是你自己实现所有成员。因此,您的类最终与另一个类兼容,但不附带任何其他类的实现。可以实现多个类。第三个选项,你没有提到,是
mixin
,它允许我们实现多个mixin
定义的类,并将它们放入我们自己的类中。你可以在这里阅读更多关于他们的信息:https://dart.dev/guides/language/language-tour#adding-features-to-a-class-mixinsiugsix8n2#
另一个定义,可能会帮助你得到的一点..使用extends使class继承(扩展)他的父类,即使你不覆盖父类的属性,你也可以使用父类的属性,除了他自己的属性和方法之外的方法,你还应该验证这个类(孩子)提交了它的父类,并且没有打破父类的限制。你只能继承一个类...其中作为
当你希望类只限于抽象类属性,但你有自己的实现这些属性时,使用实现。use可以使用“,”来实现多个接口,以便在接口之间进行连接。