一、抽象类
① Dart中的抽象类和其他语言中的抽象类差不多,都是抽象类不能有自己的实例对象,经常被用作接口的定义。抽象类的关键词abstract,他可以定义一个无方法实现的方法,也可以定义一个有方法实现的方法。
② 继承于抽象类的非抽象子类,必须实现抽象类中无方法实现的方法
③ 抽象类不一定有抽象方法,有抽象方法的类一定是抽象类
abstract class Study {
void study();
}
class StudyFlutter extends Study {
@override
void study() {
// TODO: implement study
}
}
二、mixins
mixins混入,顾名思义就是在类中混入其他功能,好处是可以自己的方法提供给其他类使用,而不需要成为其他类的父类。在高级语言的单继承中作用明显.
① mixins在多个类层次结构中重用代码的一种方式
② 要使用mixins,在with关键字后面跟上一个或者多个mixin的名字,用逗号隔开,并且要用在extends之后
③ mixins的特征,实现mixins,就创建一个继承Object类的子类(不能继承其他类),不声明构造方法
class Test extends Person with Study {
Test(String name, int age) : super(name, age);
@override
void study() {
// TODO: implement study
}
}
三、方法
// 方法的构成
// 返回值类型 + 方法名 + 参数(可选)
// 其中:返回值类型可缺省,也可为void或具体的类型
// 方法名:匿名方法不需要方法名
// 参数:参数类型和参数名,参数类型可缺省
// 私有方法,在方法名前加下划线就是私有方法
void sum(value){
return value;
}
四、泛型方法
泛型,主要是解决类、接口、方法的复用性、以及对不特定数据类型的支持
class TestGeneric {
void start() {
Cache<String> cache1 = Cache();
cache1.setItem('cache', 'cache');
}
}
class Cache<T> {
static final Map<String, Object> _cache = Map();
void setItem(String key, T value) {
_cache[key] = value;
}
T getItem(String key) {
return _cache[key];
}
}