接口定义了一组对象可用的方法。Dart没有声明接口的语法。类声明本身就是Dart中的接口。类应该使用implements关键字来实现接口。实现类必须复写已实现接口的所有功能的具体实现。换句话说,类必须重新定义它希望实现的接口中的每个函数。
定义的接口:
class InterfaceClass{
void supperInter(){ print("This is SupperClass:InterfaceClass.dart"); }
}
接口的实现类:
class DetailClass implements InterfaceClass{
// DetailClass();
void printMsg(String msg){
print("this is DetailClass print,${msg}");
}
@override
void supperInter() {
print("this is override method by Supper Class:InterfaceClass");
}
}
main()函数的调用:
void aboutInterface(){
var detail = DetailClass();
detail.printMsg("Test 接口Interface");
detail.supperInter();
}
运行效果如下:
从上面的运行结果我们可以看到:
1、Dart的接口与实现规则跟Java的接口与实现规则是完全一样的。
2、我们在接口InterfaceClass里面定义了supperInter()方法,并有具体的实现。但是在经过子类的实现并复写之后,接口的方法实现就被覆盖了,不在生效。
3、Dart里面,每个类也是遵守单继承多实现的原则,也就是继承extends只能继承一个父类,实现implements则能够理论上实现无限多个父类。