Flutter Dart中的抽象类 多态 和接口
目录
抽象 编辑
多态
接口 implements 约定、规范
抽象 
注意⚠️抽象类是不能直接实例化
//抽象 定义一个Animal,类要求它的子类必须包含eat方法
abstract class Animal {eat(); //抽象方法run(); //抽象方法printInfo() {print("我是一个抽象类里面的普通方法");}
}class Dog extends Animal {@overrideeat() {print("小狗在吃骨头");}@overriderun() {print("小狗在跑");}
}class Cat extends Animal {@overrideeat() {print("小猫在吃鱼");}@overriderun() {print("小猫在跑");}
}main() {var dog = Dog();var cat = Cat();dog.eat();dog.run();cat.eat();cat.run();// var animal = Animal(); //抽象类是不能直接实例化}
多态
子类的实例赋值给父类的引用
//多态
abstract class Animal {eat(); //抽象方法
}class Dog extends Animal {@overrideeat() {print("小狗在吃骨头");}run() {print("小狗在跑");}
}class Cat extends Animal {@overrideeat() {print("小猫在吃鱼");}run() {print("小猫在跑");}
}main() {//子类的实例赋值给父类的引用Animal dog = Dog();Animal cat = Cat();dog.eat();cat.eat();
}
接口 implements 约定、规范
//定义一个DB库,支持mysql mssql mongodb
//mysql mssql mongodb 三个类里面都有同样的方法abstract class Db {//当做接口,接口:约定、规范String uri = ""; //数据库的连接地址add(String data);save();delete();
}class Mysql implements Db {Mysql(this.uri);@overrideadd(String data) {print("Mysql data");}@overridedelete() {// TODO: implement deletethrow UnimplementedError();}@overridesave() {// TODO: implement savethrow UnimplementedError();}@overrideString uri = "";}class MsSql implements Db {@overrideadd(String data) {print("这是MsSql的add方法 $data");}@overridedelete() {// TODO: implement deletethrow UnimplementedError();}@overridesave() {// TODO: implement savethrow UnimplementedError();}@overrideString uri = "";
}main(){Mysql mysql = Mysql("URL");mysql.add("123");mysql.uri ="192.167.8.8";}