首页 > 建站教程 > dart >  dart9:dart mixin的with混入正文

dart9:dart mixin的with混入

dart9:dart mixin的with混入:接口 implements 和 mixin的with混入,都可以继承,但是,implements继承后,必须强制重写继承类所有的方法,而混入只需要重写自需要的方法即可。


void main() {
  Cat cat = Cat();
  cat.printInfo();
  cat.walk();

  Dove dove = Dove();
  dove.printInfo();
  dove.walk();
  dove.fly();

  Duck duck = Duck();
  duck.printInfo();
  duck.walk();
  duck.fly();
  duck.swim();
}

//猫继承动物类,同时混入行走类
class Cat extends Mammal with Walker {
  void printInfo() {
    print('我是一只猫');
  }
}

//蝙蝠继承自鸟类,同时混入行走类和飞类
class Dove extends Bird with Walker, Flyer {
  void printInfo() {
    print('我是一只蝙蝠');
  }
}

//鸭子类继承自鸟类,同时混入行走类、飞类和游泳类
class Duck extends Bird with Walker, Flyer, Swimmer {
  void printInfo() {
    print('我是一只鸭子');
  }
}

abstract class Animal {}

abstract class Mammal extends Animal {}

abstract class Bird extends Animal {}

abstract class Fish extends Animal {}

//通过抽象类和工厂方法返回null可以实现不需要实例化
abstract class Walker {
  factory Walker._() => null;

  void walk() {
    print('我会走路');
  }
}

abstract class Swimmer {
  factory Swimmer._() => null;

  void swim() {
    print('我会游泳');
  }
}

abstract class Flyer {
  factory Flyer._() => null;

  void fly() {
    print('我会飞');
  }
}

//下面的写法必须要实例化
// class Walker {
//   void walk() {
//     print('我会走路');
//   }
// }

// class Swimmer {
//   void swim() {
//     print('我会游泳');
//   }
// }

// class Flyer {
//   void fly() {
//     print('我会飞');
//   }
// }