Mixins
Mixins(混入功能)相当于多继承,也就是说可以继承多个类,使用with关键字来实现Mixins的功能。
那么多个类中有相同的方法时候,会被覆盖吗?覆盖的先后是什么?
class A{ void a(){ print("A.a()..."); } } class B{ void a(){ print("B.a()..."); } void b(){ print("B.b()..."); } }
现在新建一个类D,使得D继承A和B
// 类D 继承A和B class D extends A with B{ }
执行:
void main() { var d = new D(); d.a(); }
输出:
B.a()...
如果我们改变A 和B 顺序,如下
// 类D 继承A和B,B在前A在后 class D extends B with A{ }
再次执行
void main() { var d = new D(); d.a(); }
输出:
A.a()...
说明了:后面的类中的方法将前面的类中相同的方法覆盖
我们再验证三个类的情况:
新建类 C
class C{ void a(){ print("C.a()..."); } void b(){ print("C.b()..."); } void c(){ print("C.c()..."); } }
修改类D
// 类D 继承A、B、C,A,C在前 ,B在最后 class D extends A with C,B{ }
再次执行
void main() {
var d = new D();
d.a();
}
输出:
B.a()...
再次说明:后面的类中的方法将前面的类中相同的方法覆盖。
综上,Dart中使用Mixins,可以达到多继承的效果,后面的类中的方法将前面的类中相同的方法覆盖
Dart学习系列文章:https://www.cnblogs.com/jukaiit/category/1636484.html
内容来源于网络如有侵权请私信删除
文章来源: 博客园
- 还没有人评论,欢迎说说您的想法!