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('我会飞');
// }
// }