一、接口
类和接口是统一的,类就是接口,即dart中没有interface关键字,使用class代替
每个类都隐式的定义了一个包含所有实例成员的接口,可以理解成类就是接口,接口就是类
如果一个类实现一个接口,使用implements关键字,这个和Java类似
实现类必须实现接口中所有非静态功能的具体实现,记住是所有非静态,包括变量和函数。
一个类可以实现多个接口,接口用逗号分隔。
不管是抽象类还是实现类都可以用来实现接口,建议使用抽象类被用来实现接口,因为要实现实现类里面的所有方法和属性,如果不使用抽象类就显的有些乱,降低代码可读性。从某种意义上讲,dart抽象类=接口+抽象类。
二、实践
使用类作为接口,不同类中(不同类文件中)
接口
class FatherInterfaze {
int bloodGroup;
int _character;
int get getBloodGroup => bloodGroup;
int get _getCharacter => _character;
}
实现类
import 'package:flutter_demo/clazz/FatherInterfaze.dart';
class Son implements FatherInterfaze{
@override
int bloodGroup;
@override
// TODO: implement getBloodGroup
int get getBloodGroup => throw UnimplementedError();
}
使用类作为接口,相同文件中(在同一dart文件中定义两个内部类)
class FatherInterfaze {
int bloodGroup;
int _character;
int get getBloodGroup => bloodGroup;
int get _getCharacter => _character;
}
class Son implements FatherInterfaze{
@override
int bloodGroup;
@override
// TODO: implement getBloodGroup
int get getBloodGroup => throw UnimplementedError();
@override
int _character;
@override
// TODO: implement _getCharacter
int get _getCharacter => throw UnimplementedError();
}
抽象类定义接口(强烈推荐)
abstract class Interfaze {
int getBloodGroup();
String getInterfazeName();
}
import 'package:flutter_demo/clazz/Interfaze.dart';
class ImplementsClass implements Interfaze{
@override
int getBloodGroup() {
// TODO: implement getBloodGroup
throw UnimplementedError();
}
@override
String getInterfazeName() {
// TODO: implement getInterfazeName
throw UnimplementedError();
}
}
实现多个接口
class Son implements FatherInterfaze, GrandFatherInterfaze{
@override
int bloodGroup;
}
class FatherInterfaze {
int bloodGroup;
}
class GrandFatherInterfaze {
int bloodGroup;
}