Dart-Mixin详解

在开始阅读此篇文章之前,我们可以先思考下如下问题:

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();

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容