Flutter/Dart - Dart中一个类实现多个接口 以及Dart中的Mixins

顺心 等级 240 0 0

Dart中implements实现多个接口

abstract class A {
  String name;
  printA();
}

abstract class B {
  printB();
}

class C implements A,B{
  @override
  String name;

  @override
  printA() {
   print('printA');
  }

  @override
  printB() {
    // TODO: implement printB
    return null;
  }

}

main(List<String> args) {
   C c = new C();
   c.printA();
} 

Dart中的mixins 使用

mixins的中文意思就是混入,就是在类中混入其他功能

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

因为mixins可以使用的条件,随着dart版本一直在变,这里讲的是dart2.x中使用mixins的条件:

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

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

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

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

class A {
  String info = 'a';
  printA() {
    print('printA');
  }
}

class B {
  printB() {
    print('printB');
  }
}

class C with A, B {}

void main() {
  C c = new C();
  c.printA();
  c.printB();
  print(c.info);
} 

Dart中的mixins 实现类似多继承功能

class Person {
  String name;
  Person(this.name);
}

class A extends Person{ //在A继承了Person后, 这个时候不能再进行mixins
  String info = 'a';
  printA() {
    print('printA');
  }
}

class B {
  // B({}) //不能在类里面写构造函数,否则也无法进行mixins
  printB() {
    print('printB');
  }
}

class C extends Person with A, B {} //---划重点----才可以继承Person类,Person类中也可以加构造函数

void main() {
  C c = new C();
  c.printA();
  c.printB();
  print(c.info);
} 

Dart中的mixins 的类型

class A {
  String info = 'a';
  printA() {
    print('printA');
  }
}

class B {
  printB() {
    print('printB');
  }
}

class C with A, B {}

void main() {
  C c = new C();
  print(c is C); //true
  print(c is A); //true
  print(c is B); //true
} 
预览图
收藏
评论区