1. 抽象类
1. abstract定义抽象类
抽象类中有抽象方法,子类必须包含该方法
abstract class Animal{ eat(); //抽象方法 run(); //抽象方法 printInfo(){ print('我是一个抽象类里面的普通方法'); } } class Dog extends Animal{ @override eat() { print('小狗在吃骨头'); } @override run() { // TODO: implement run print('小狗在跑'); } }
抽象类不能被实例化,只有继承它的子类可以
Animal a = new Animal()// 会报错
2. 多态
多态就是父类定义一个方法不去实现,让继承他的子类去实现,每个子类有不同的表现。
上面的例子就是多态。
3. 接口 implements
通过抽象类、普通类实现接口,使用关键字implements,一般使用抽象类(如果实现的类是普通类,会将普通类和抽象中的属性的方法全部需要覆写一遍)
abstract class Db{ // 当做接口 接口:就是约定 、规范 late String uri; //数据库的链接地址 add(String data); save(); delete(); } class Mysql implements Db{ @override String uri; Mysql(this.uri); @override add(data) { // TODO: implement add print('这是mysql的add方法'+data); } @override delete() { // TODO: implement delete return null; } @override save() { // TODO: implement save return null; } remove(){ } }