查看: 64|回复: 0

Dart语言学习(十三) Dart Mixins 实现多继承

[复制链接]
发表于 2020-2-15 23:51:34 | 显示全部楼层 |阅读模式
Mixins

Mixins(混入功能)相当于多继承,也就是说可以继承多个类,使用with关键字来实现Mixins的功能。
那么多个类中有相同的方法时间,会被覆盖吗?覆盖的先后是什么?
  1. class A{  void a(){    print("A.a()...");  }}class B{  void a(){    print("B.a()...");  }  void b(){    print("B.b()...");  }}
复制代码
如今新建一个类D,使得D继承A和B
  1. // 类D 继承A和B class D  extends A with B{}
复制代码
实行:
  1. void main() {  var d = new D();  d.a();}
复制代码
输出:
  1. B.a()...
复制代码

如果我们改变A 和B 顺序,如下
  1. // 类D 继承A和B,B在前A在后class D  extends B with A{}
复制代码
再次实行
  1. void main() {  var d = new D();  d.a();}
复制代码
输出:
  1. A.a()...
复制代码

说明了:后面的类中的方法将前面的类中相同的方法覆盖
我们再验证三个类的环境:
新建类 C
  1. class C{  void a(){    print("C.a()...");  }  void b(){    print("C.b()...");  }  void c(){    print("C.c()...");  }}
复制代码

修改类D
  1. // 类D 继承A、B、C,A,C在前 ,B在末了class D  extends A with C,B{}
复制代码
再次实行
  1. void main() {  var d = new D();  d.a();}
复制代码
输出:
  1. B.a()...
复制代码
再次说明:后面的类中的方法将前面的类中相同的方法覆盖。
综上,Dart中使用Mixins,可以达到多继承的效果,后面的类中的方法将前面的类中相同的方法覆盖

  1. Dart学习系列文章:[url=https://www.cnblogs.com/jukaiit/category/1636484.html]https://www.cnblogs.com/jukaiit/category/1636484.html[/url]
复制代码

相关技术服务需求,请联系管理员和客服QQ:2753533861或QQ:619920289
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

帖子推荐:
客服咨询

QQ:2753533861

服务时间 9:00-22:00

快速回复 返回顶部 返回列表