0Pricing
Dart Academy · 课时

extends 和方法重写

共享并专门化父类行为

extends 和方法重写 是 CoddyKit 上的免费 Dart Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Dart Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Dart Academy 课程共包含 4 节课。

共享行为

当两个类共享大部分行为时,您可以将这些行为编写一次并重复使用。Dart 将其称为继承,这样可以避免复制粘贴。🌱

extends 关键字

在类名后写 extends 即可继承。新类是一个子类,会自动获得父类的字段和方法。

class Animal {}
class Dog extends Animal {}

父类与子类

您继承的类称为超类(父类)。新类称为子类。Dog 是 Animal,但并非每个 Animal 都是 Dog。

继承的成员

子类可以立即使用父类的公共方法,就像这些方法属于自己一样。您只需编写一次继承的行为,所有子类都能受益。

class Animal {
  void breathe() => print('breathing');
}
class Dog extends Animal {}
// Dog().breathe() works

添加新行为

子类还可以在继承内容的基础上添加自己的方法。子类仍然是 Animal,但会获得父类从未拥有的额外能力。

class Dog extends Animal {
  void bark() => print('Woof!');
}

重写方法

有时,父类的版本并不适合子类。重写允许子类用自己的实现替换继承而来的方法。

class Animal {
  void speak() => print('...');
}
class Cat extends Animal {
  void speak() => print('Meow');
}

@override 标记

在被替换的方法上方添加 @override 注解。它会告诉分析器确认父类确实有这个方法,从而及早发现拼写错误。

class Cat extends Animal {
  @override
  void speak() => print('Meow');
}

必须使用相同的签名

重写必须保留相同的名称和兼容的签名。如果不慎更改参数或返回类型,Dart 就会拒绝它。

复用父类版本

在重写的方法中,您仍然可以通过父类调用原始实现,然后在它的前后添加自己的步骤。这样是在扩展行为,而不是丢弃它。

@override
void speak() {
  super.speak();
  print('and purrs');
}

多态的实际应用

将子类存储在 Animal 类型的变量中并调用 speak:每个对象都会运行自己的版本。这就是多态,也是重写真正的价值所在。

Animal a = Cat();
a.speak(); // Meow

单继承

Dart 类只能恰好扩展一个父类,绝不能扩展两个。以后如果要在互不相关的继承树之间共享功能,您可以使用混入。

快速检查

您在子类中替换了一个继承而来的方法。它会做什么?

回顾

您使用 继承来获得父类的成员,添加了新方法,并使用 @override 重写了其他方法。这就是类复用的核心。🎉

常见问题解答

「extends 和方法重写」课时是免费的吗?

是的 — 「extends 和方法重写」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Dart Academy 课程的其余内容,请升级到 CoddyKit PRO。 Dart Academy 课程共包含 4 节课。

「extends 和方法重写」这节课中我会学到什么?

共享并专门化父类行为 你通过在浏览器中直接运行的动手代码来练习 Dart Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Dart Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Dart Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「extends 和方法重写」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Dart Academy 课中编写并运行代码吗?

能。每节 Dart Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. extends 和方法重写
  2. 调用 super 和构造函数链
  3. 使用 with 关键字创建混入
  4. on 约束和混入顺序
← 返回 Dart Academy