我想明白之间的差别extends,implements和with。什么时候使用每个关键字?
我想明白之间的差别extends,implements和with。什么时候使用每个关键字?
Answers:
使用extends创建一个子类,并使用super引用超类。
Extends是典型的OOP类继承。如果a类扩展了b类,则在b类中实现的所有属性,变量,函数也将在a类中提供。另外,您可以覆盖功能等。
您可以使用extend,如果你想创建一个类的更具体的版本。例如,班车可以扩展班车。在Dart中,一个类别只能扩展一个类别。
每个类都隐式定义一个接口,该接口包含该类及其实现的所有接口的所有实例成员。如果要创建一个支持类B的API的类A而又不继承其B的实现,则类A应该实现B接口。
Implements如果要创建自己的另一个类或接口的实现,可以使用。当a类实现b类时。必须实现类b中定义的所有功能。
在实现另一个类时,您不会从该类继承代码。您仅继承类型。在Dart中,您可以将implements关键字与多个类或接口一起使用。
Mixins是在多个类层次结构中重用类代码的一种方法。
With用于包括Mixins。mixin是另一种类型的结构,只能与关键字一起使用with。
它们在Flutter中用于包含常见的代码片段。常用的Mixin是SingleTickerProviderStateMixin。
implement分类,而只能implement接口。接口仅包含函数和变量定义,而没有实现。在Dart每个类中自动都有一个接口,其中包括所有定义。因此,您也可以implements与类一起使用。
extends,只能与单个类一起使用。
with在类中使用关键字而不是mixin会发生什么?编译器不会抱怨。
extends不能用于多重继承吗?您能否解释一下“每个类都隐式定义一个接口,其中包含该类的所有实例成员及其实现的任何接口”?如果我扩展SingleTickerProviderStateMixin,将会发生什么。而不是使用?