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('我会飞'); // } // }
dart9:dart mixin的with混入
dart9:dart mixin的with混入:接口 implements 和 mixin的with混入,都可以继承,但是,implements继承后,必须强制重写继承类所有的方法,而混入只需要重写自需要的方法即可。