隐式接口和 implements
将任意类视为接口
隐式接口和 implements 是 CoddyKit 上的免费 Dart Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Dart Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Dart Academy 课程共包含 4 节课。
每个类都是一个接口
在 Dart 中,每个类都会默默定义一个隐式接口:也就是它的所有公共方法和获取器的完整集合,其他类可以承诺提供这些成员。
实现与继承的区别
使用继承时,您会继承代码。使用实现时,您只采用其形状,必须自己重新编写每个成员。
class Robot implements Greeter {}一个简单的接口来源
任何普通类都可以充当接口。在这里,Greeter 定义了一个供其他类实现的方法。
class Greeter {
String greet() => 'Hi';
}实现接口
当您实现一个类时,它的任何代码都不会被带过来。您要为它声明的每个成员提供全新的主体。
class Robot implements Greeter {
String greet() => 'Beep';
}必须全部提供
即使漏掉一个成员,也会产生编译错误。实现要求提供完整的接口,不能依靠继承来走捷径。
class Robot implements Greeter {} // error: greet missing实现多个接口
类可以通过用逗号列出多个接口来同时实现它们,一次获得所有接口的形状。
class Robot implements Greeter, Logger {}将抽象类作为接口
纯抽象类非常适合作为接口。它们只声明签名,因此实现者完全不会继承任何代码。
abstract class Greeter {
String greet();
}接口加继承
您可以同时结合两者:使用继承从一个类获得其代码,并使用实现从其他类获得它们的形状。
class Robot extends Machine implements Greeter {}针对接口进行类型声明
类实现 Greeter 后,您就可以将它存储在 Greeter 类型的变量中,并调用 greet,而无需知道具体类型。
Greeter g = Robot();
print(g.greet());接口保持解耦
由于实现不会复制任何行为,您的类仍然独立于原始类。您可以自由修改接口来源,而不会继承它的错误。
字段会成为获取器
接口中的字段会表现为一个获取器要求。您可以用真实字段或计算属性获取器来满足它。
class Robot implements Named {
final String name = 'R2';
}快速检查
关于实现接口的一个小问题。
回顾
每个类都会公开一个隐式接口。使用实现来采用它的形状,重新实现每个成员,还可以一次组合多个接口。🔌
常见问题解答
「隐式接口和 implements」课时是免费的吗?
是的 — 「隐式接口和 implements」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Dart Academy 课程的其余内容,请升级到 CoddyKit PRO。 Dart Academy 课程共包含 4 节课。
「隐式接口和 implements」这节课中我会学到什么?
将任意类视为接口 你通过在浏览器中直接运行的动手代码来练习 Dart Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Dart Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Dart Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「隐式接口和 implements」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Dart Academy 课中编写并运行代码吗?
能。每节 Dart Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 抽象类和抽象方法
- 隐式接口和 implements
- 通过共享类型实现多态
- 优先使用组合而非继承