Dart中的面向?qū)ο?/h1>
聲明一個(gè)類
  • 使用class關(guān)鍵字, 聲明一個(gè)類
class Person{
}
類的屬性和方法

1.屬性會(huì)自動(dòng)生成getter和setter方法, 屬性用點(diǎn)運(yùn)算符訪問(wèn)
2.使用final聲明的屬性只有g(shù)etter方法
3.方法不能重載

class Man{
  //屬性
  String name;
  int age;
  final String sex = "男";
  //方法
  void say(){
    print("我的名字是"+name+", 年齡是"+age.toString()+", 性別是"+sex);
  }
}

4.計(jì)算屬性: 計(jì)算而來(lái)习寸,本身是不存儲(chǔ)值的

class Rectangle{
  num width, height;
  //計(jì)算屬性
  num get area => width * height;
  set area(value){
    width = 10;
    height = value / width;
  }
}

main(){
  var r = new Rectangle();
  r.area = 65;
  print(r.width.toString() + "  "+ r.height.toString()); //10  6.5
}

5.靜態(tài)成員, 使用static關(guān)鍵字來(lái)實(shí)現(xiàn)類級(jí)別的變量和函數(shù), 靜態(tài)成員不能訪問(wèn)非靜態(tài)成員, 非靜態(tài)成員可以訪問(wèn)靜態(tài)成員

class Person{
  static const int age = 11;
  static int num = 1;
  static void addNum(){
    num ++;
  }
}

main(){
  print(Person.num); //1
  Person.addNum();
  print(Person.num); //2
  print(Person.age); //11
}
類及成員的可見(jiàn)性

1.在Dart中, 可見(jiàn)性是以library(庫(kù))為單位, 默認(rèn)情況下, 一個(gè)Dart文件就是一個(gè)庫(kù)
2.使用_表示私有
3.使用import導(dǎo)入庫(kù)

構(gòu)造方法

1.沒(méi)有自定義構(gòu)造方法, 系統(tǒng)會(huì)為我們自動(dòng)生成一個(gè)默認(rèn)構(gòu)造方法
2.有自定義構(gòu)造方法, 默認(rèn)構(gòu)造方法失效
3.構(gòu)造方法不能重載

  • 自定義構(gòu)造函數(shù)
class Person{
  
  //屬性
  String name;
  int age;

  //自定義構(gòu)造函數(shù)
  Person(String name, int age){
    this.name = name;
    this.age = age;
  }

  //自定義構(gòu)造函數(shù)的簡(jiǎn)寫形式, 效果跟上面一致
  // Person(this.name, this.age);
}

main(){
  var person = new Person("張三", 11);
}
  • 命名構(gòu)造函數(shù)
    構(gòu)造函數(shù)不能重載, 可以使用命名構(gòu)造函數(shù)實(shí)現(xiàn)多個(gè)構(gòu)造方法
class Person{  
  //屬性
  String name;
  int age;

  //構(gòu)造方法
  Person(this.name, this.age);
  //命名構(gòu)造方法
  Person.withName(this.name);
  Person.withNameAndAge(this.name, this.age);
}

main(){
  var person1 = new Person("zhangsan", 11);
  //命名構(gòu)造函數(shù)
  var person2 = new Person.withName("list");
  var person3 = new Person.withNameAndAge("wangwu", 12);
}
  • 常量構(gòu)造函數(shù)
    1.如果類是不可變狀態(tài), 可以把對(duì)象定義為編譯時(shí)常量
    2.使用const聲明構(gòu)造方法, 并且所有變量都是final
    3.使用const聲明對(duì)象, 也可以省略const
class Person{  
  final String name;
  final int age;
  const Person(this.name, this.age);
}

main(){
  //const person = const Person("lisi", 11);
  const person = Person('lisi', 11); //等價(jià)于上一行, const可以省略
}
繼承

1.使用extends關(guān)鍵字
2.子類繼承父類可見(jiàn)的屬性和方法, 不會(huì)繼承構(gòu)造方法
3.子類可以重寫父類的方法
4.單繼承
5.子類的構(gòu)造方法默認(rèn)會(huì)調(diào)用父類的無(wú)名無(wú)參構(gòu)造方法, 如果父類沒(méi)有無(wú)名無(wú)參構(gòu)造方法,則需要顯示調(diào)用父類構(gòu)造方法

class Animal{
  //屬性
  String name;
  int age;

  //方法
  void run(){
    print("run...");
  }
}

//Person繼承了Animal
class Person extends Animal{
  String address;
  void study(){
    print('study ....');
  }
}

//Person繼承了Animal, 所有Person有了Animal的方法和屬性
main(){
  var person = new Person();
  person.name = 'zhangsan';
  person.age = 11;
  person.address = '鄭州';
  person.run(); //run..
  person.study(); //study...
}
抽象類
  1. 抽象類使用abstract表示衬潦,不能直接被實(shí)例化
  2. 抽象方法用abstract表示回右,無(wú)實(shí)現(xiàn)
  3. 抽象類可以沒(méi)有抽象方法
  4. 有抽象方法的類一定是抽象類
//抽象類
abstract class Person{
  void run();
}
class Student extends Person{
  @override
  void run() {
    // TODO: implement run
    print("run ............");
  }
}
接口
  1. 類和接口是統(tǒng)一的隆圆,類就是接口
  2. 每個(gè)類都隱式的定義了一個(gè)包含所有實(shí)例成員的接口
  3. 如果復(fù)用已有類的實(shí)現(xiàn),使用繼承extends
  4. 如果只是使用已有類的外在行為翔烁,使用接口implements
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者

  • 序言:七十年代末渺氧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蹬屹,更是在濱河造成了極大的恐慌侣背,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件慨默,死亡現(xiàn)場(chǎng)離奇詭異贩耐,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)业筏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門憔杨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蒜胖,你說(shuō)我怎么就攤上這事消别∨自椋” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵寻狂,是天一觀的道長(zhǎng)岁经。 經(jīng)常有香客問(wèn)我,道長(zhǎng)蛇券,這世上最難降的妖魔是什么缀壤? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮纠亚,結(jié)果婚禮上塘慕,老公的妹妹穿的比我還像新娘。我一直安慰自己蒂胞,他們只是感情好图呢,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著骗随,像睡著了一般蛤织。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鸿染,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天指蚜,我揣著相機(jī)與錄音,去河邊找鬼涨椒。 笑死摊鸡,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的丢烘。 我是一名探鬼主播柱宦,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼播瞳!你這毒婦竟也來(lái)了掸刊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤赢乓,失蹤者是張志新(化名)和其女友劉穎忧侧,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體牌芋,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蚓炬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了躺屁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肯夏。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出驯击,到底是詐尸還是另有隱情烁兰,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布徊都,位于F島的核電站沪斟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏暇矫。R本人自食惡果不足惜主之,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望李根。 院中可真熱鬧槽奕,春花似錦、人聲如沸朱巨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)冀续。三九已至,卻和暖如春必峰,著一層夾襖步出監(jiān)牢的瞬間洪唐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工吼蚁, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留凭需,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓肝匆,卻偏偏與公主長(zhǎng)得像粒蜈,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子旗国,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容