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

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

 

posted @ 2020-02-04 17:43  鸿鹄当高远  阅读(1115)  评论(0编辑  收藏  举报