我想明白之间的差别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,将会发生什么。而不是使用?