和Java 一样, Dart中也有接口, 但是和 Java还是有区别的。
首先 , Dart 中的接口没有 interface 关键字, 而是普通类或者抽象类作为接口被实现(建议使用抽象类定义接口)。
同样使用 implements 关键字进行实现。
但是 Dart 中的接口有点奇怪,如果实现的类是普通类, 会将普通类和抽象中的属性和方法全部覆写一遍。
// Db.dartabstract class Db {// late 关键表示, dart 并不要求你对变量立即赋值, 只需要我们在初始化的时候 赋值即可,可以理解为懒加载的意思late String uri;add();save();del();}// MySql.dartimport 'Db.dart';// implements 关键 是 实现的意思, Db 中如果有公用的方法,我们就需要使用 extends 继承,而Db类只是用来约束规范的类,并没有公用的方法,所以是用 implements 关键字。class MySql implements Db {@overrideString uri;MySql(String this.uri);@overrideadd() {print('mysql add');}@overridedel() {print('msql del');}@overridesave() {print('masql save');}}// index.dartimport 'lib/MySql.dart';void main() {MySql mySql = new MySql('xxxxxx');mySql.add();mySql.del();mySql.save();}
实现多个接口
abstract class A {printA();}abstract class B {printB();}class C implements A,B{@overrideprintA() {print('A');}@overrideprintB() {print("B");}}
