Flutter 混合mixin的基础用法

参考:https://blog.csdn.net/mqdxiaoxiao/article/details/102953803/

1. mixin解决的问题是在不用继承的情况下复用带有实现的代码块。1. 避免多重继承,2.避免接口(虚类)不能带实现代码的问题。3. 避免组合要在类中定义一个实例变量的问题

2 用法, class A extends 父类B with mixin C

3. 限制, mixin不能有构造函数

4. 多个mixin间,mixin与类, mixin与父类具有同名函数的覆盖规则

    1)后面混入的覆盖前面混入的Mixin的同名方法

     2)Mixin不会覆盖被混入类自带的同名方法

     3)Mixin会覆盖被混入类的父类同名方法

可以理解为越后定义(引入)的函数会覆盖前边的同名函数比如

class A extends 父类B with mixin C , mixin D{

    void p(){}

}

如果类A, 父类B, mixin C,  mixin D都定义的函数p , 从定义(引入)p函数的顺序是 父类B->mixin C->mixin D->A类复写。 所以 

1. 类A继承父类B, 所以引入了父类B的p函数

 2. 混合mixin C时, mixin C的p函数会替换父类B的p函数

3.混合mixin D时 mixin D的p函数会替换mixin C的p函数

4. 最后在A类复写了p函数,所以A重新定义的p函数会替换mixin D的p函数

 5. 所以最后是类A重新定义的p函数有效执行。

如果A类没有定义p函数,则会执行mixin D定义的p函数, 如果mixin D也没有定义p函数,则使用mixin C的p函数...如此类推

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容