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

Posted jukaiit

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于Dart语言学习(十三) Dart Mixins 实现多继承的主要内容,如果未能解决你的问题,请参考以下文章

深入理解 Dart 中的继承和 Minxins

在 Dart 中何时使用 mixins 以及何时使用接口?

Dart常用核心知识

Dart语言初次见面,以后也会天天见面

Dart 中的 extends / with / implements

dart中extends implementswith的用法与区别