在开始阅读此篇文章之前,我们可以先思考下如下问题:
1.什么是 Mixin ?
2.Mixin为什么会被设计出来,它解决了什么问题?
3.在 Mixin 被设计出来之前是如何解决此类问题?
4.Mixin 使用场景是什么?
5.Mixin 具体如何使用?
带着这5个问题再去阅读本篇文章,会让你对 Mixin 理解更加深刻。本篇文章主要理解Dart 中的 Mixin机制
image.png
- Dart不支持多继承
- 支持mixin,可以通过mixin 间接实现 多继承的功能
mixin之线性化
在上面的示例中,我们发现with关键字后有多个类。那么这里就产生了一个问题——如果with后的多个类中有相同的方法,那么当调用该方法时,会调用哪个类里的方法尼?由于距离with关键字越远的类会重写前面类中的相同方法,因此分为以下两种情况
1.如果当前使用类重写了该方法,就会调用当前类中的方法。
2.如果当前使用类没有重写了该方法,则会调用距离with关键字最远类中的方法。
例:
class Person {
study() {
print("学习");
}
}
mixin Animal {
eat() {
print("吃");
}
run() {
print("跑");
}
}
class Man extends Person with Animal {
run() {
print("男人在跑");
}
}
Man man1 = Man();
man1.run();
网友评论