一、抽象類
① Dart中的抽象類和其他語言中的抽象類差不多,都是抽象類不能有自己的實(shí)例對象,經(jīng)常被用作接口的定義。抽象類的關(guān)鍵詞abstract,他可以定義一個無方法實(shí)現(xiàn)的方法,也可以定義一個有方法實(shí)現(xiàn)的方法。
② 繼承于抽象類的非抽象子類,必須實(shí)現(xiàn)抽象類中無方法實(shí)現(xiàn)的方法
③ 抽象類不一定有抽象方法,有抽象方法的類一定是抽象類
abstract class Study {
void study();
}
class StudyFlutter extends Study {
@override
void study() {
// TODO: implement study
}
}
二、mixins
mixins混入,顧名思義就是在類中混入其他功能,好處是可以自己的方法提供給其他類使用,而不需要成為其他類的父類。在高級語言的單繼承中作用明顯.
① mixins在多個類層次結(jié)構(gòu)中重用代碼的一種方式
② 要使用mixins,在with關(guān)鍵字后面跟上一個或者多個mixin的名字,用逗號隔開,并且要用在extends之后
③ mixins的特征,實(shí)現(xiàn)mixins,就創(chuàng)建一個繼承Object類的子類(不能繼承其他類),不聲明構(gòu)造方法
class Test extends Person with Study {
Test(String name, int age) : super(name, age);
@override
void study() {
// TODO: implement study
}
}
三、方法
// 方法的構(gòu)成
// 返回值類型 + 方法名 + 參數(shù)(可選)
// 其中:返回值類型可缺省,也可為void或具體的類型
// 方法名:匿名方法不需要方法名
// 參數(shù):參數(shù)類型和參數(shù)名,參數(shù)類型可缺省
// 私有方法,在方法名前加下劃線就是私有方法
void sum(value){
return value;
}
四、泛型方法
泛型,主要是解決類、接口、方法的復(fù)用性、以及對不特定數(shù)據(jù)類型的支持
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];
}
}