“扩展”与“实现”与“具有”


Answers:


75

扩展:

使用extends创建一个子类,并使用super引用超类。

Extends是典型的OOP类继承。如果a类扩展了b类,则在b类中实现的所有属性,变量,函数也将在a类中提供。另外,您可以覆盖功能等。

您可以使用extend,如果你想创建一个类的更具体的版本。例如,班车可以扩展班车。在Dart中,一个类别只能扩展一个类别。


实施:

每个类都隐式定义一个接口,该接口包含该类及其实现的所有接口的所有实例成员。如果要创建一个支持类B的API的类A而又不继承其B的实现,则类A应该实现B接口。

Implements如果要创建自己的另一个类或接口的实现,可以使用。当a类实现b类时。必须实现类b中定义的所有功能。

在实现另一个类时,您不会从该类继承代码。您仅继承类型。在Dart中,您可以将implements关键字与多个类或接口一起使用。


与(Mixins):

Mixins是在多个类层次结构中重用类代码的一种方法。

With用于包括Mixins。mixin是另一种类型的结构,只能与关键字一起使用with

它们在Flutter中用于包含常见的代码片段。常用的Mixin是SingleTickerProviderStateMixin


因此,extends不能用于多重继承吗?您能否解释一下“每个类都隐式定义一个接口,其中包含该类的所有实例成员及其实现的任何接口”?如果我扩展SingleTickerProviderStateMixin,将会发生什么。而不是使用?
Keerti Purswani

9
在其他编程语言中,您不能implement分类,而只能implement接口。接口仅包含函数和变量定义,而没有实现。在Dart每个类中自动都有一个接口,其中包括所有定义。因此,您也可以implements与类一起使用。
NiklasPor

是的extends,只能与单个类一起使用。
NiklasPor

5
“每个类都自动具有一个接口”-因此,当我从另一个类中实现该类时,该类内部的所有实现都将被忽略?
Keerti Purswani

@Niklas如果我with在类中使用关键字而不是mixin会发生什么?编译器不会抱怨。
kosiara-Bartosz Kosarzycki,

0

extend只能同时使用一个类,但是...您可以轻松扩展一个类,该类扩展另一个类,该类又扩展另一个类,...!;)

实际上,大多数Flutter窗口小部件都是这样构建的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.