美文网首页
11.Dart-11实现多个接口,以及mixins

11.Dart-11实现多个接口,以及mixins

作者: 你的胡霸霸 | 来源:发表于2021-09-15 13:55 被阅读0次

/**

* Dart中一个类实现多个接口

*

*

* Mixins的中文意思就是混入, 就是在勒种混入其他功能

* 在Dart中可以使用mixins实现类似多继承的功能

* 因为mixins使用的条件, 随着Dart版本一直在变,目前写的只是2.x中的

*    1.作为mixins的类只能继承自Object, 不能继承其他类

*    2.作为mixins的类不能有构造函数

*    3.一个类可以mixins多个mixins类

*    4.mixins 不是继承, 也不是接口, 而是一种新的特性

*

*

* 如果继承的和mixins混合得到的方法或者属性名称有相同的, 那么最后一个混合的类的方法和属性将覆盖前面相同的方法

*/

// 建议使用抽象类定义接口

abstract class A {

  String name;

  printA();

  run() {

    print("xxxxxx");

  }

}

abstract class B {

  printB();

}

main(List<String> args) {

  C c = new C();

  c.printA();

  c.printB();

  c.run();

  D d = new D();

  d.name = "我是通过mixins来获得的";

  d.printA();

  d.printB();

  print("-----------------------------");

  E e = new E("大王");

  e.say();

  e.printA();

  e.printB();

  print(e is A); //true

  print(e is B); //true

  print(e is Person); //true

}

// 使用implements是需要实现接口里面的所有的属性和方法

// 如果需要继承一个抽象类,那么用extends,

// 如果不需要继承,而是需要完全复写接口里面的所有的属性和方法就用implements

class C extends A implements B {

  @override

  String name;

  @override

  printA() {

    print("printA");

  }

  @override

  printB() {

    print("printB");

  }

}

// 使用mixins,  这里面的A, B两个类只能是继承自Object,不能继承自其他类, 同时A,B两个类不能有构造函数

class D with A, B {

  @override

  printA() {

    print("这是使用mixins后获得的name属性 , name =${this.name}");

  }

  @override

  printB() {

    print("B类没有name属性,但是因为mixins了A类, 所有可以用this.name = ${this.name}");

  }

}

class Person {

  String nickname;

  Person(this.nickname);

  say() {

    print("这是${this.nickname}");

  }

}

// E类也可以先继承Person类, 然后在通过mixins混合得到A,B的属性和方法

// 这样E就有了Person的方法和属性, 同时也有了A,B的方法和属性, 如果Person,A,B有相同的方法和属性, 那么最后一个将覆盖之前的

class E extends Person with A, B {

  E(String nickname) : super(nickname);

  @override

  printA() {

    print("这是使用mixins后获得的nickname属性 , nickname =${this.nickname}");

  }

  @override

  printB() {

    print(

        "B类没有nickname属性,但是因为mixins了A类, 所有可以用this.nickname = ${this.nickname}");

  }

}

相关文章

网友评论

      本文标题:11.Dart-11实现多个接口,以及mixins

      本文链接:https://www.haomeiwen.com/subject/jswqwltx.html