日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Flutter】Dart 面向对象 ( mixins 特性 )

發布時間:2025/6/17 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Flutter】Dart 面向对象 ( mixins 特性 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、mixins 簡介
  • 二、mixins 判定示例
  • 二、mixins 示例
  • 四、 相關資源





一、mixins 簡介



mixins 作用 : mixins 是 Dart 的重要特性 ;

  • 添加特性 : mixins 可以為類添加一些特性 ;

  • 重構代碼 : mixins 是多個類層次結構中重構代碼的一種途徑 ;


mixins 使用 : 在 with 關鍵字后跟上若干 mixin 名稱 , 如果有多個使用逗號分隔 ;

with 的位置 : 在 extends 關鍵字之后 , mixin 名稱之前 ;


mixins 實現要素 ★ : 滿足下面三種要求的類就是 mixins ;

  • ① 繼承 Object : 創建一個繼承自 Object 的子類 , 不能繼承其它類 ;

  • ② 無構造方法 : 不能聲明構造方法 , 所有的構造方法都不聲明 ( 包括命名 , 工廠 , 普通構造方法 ) ;

  • ③ 無 super 調用 : 不能通過 super 調用父類方法 ;

抽象類 和 普通類 都可以是 mixins ;





二、mixins 判定示例



判定下面的 Student2 , AbstractPerson , Student3 , Student4 哪個是 mixins ;

// 使用工廠構造方法實現單例模式 // 工廠構造方法就是單例模式 // 工廠構造方法作用是返回之前已經創建的對象 , 之前創建對象時需要緩存下來 ; class Student2{// 靜態成員static Student2 instace;// 工廠構造方法factory Student2(){if(instace == null){// 調用命名構造方法創建 Student2 對象instace = Student2.init();}// 返回單例對象return instace;}// 命名構造方法Student2.init(); }// 定義抽象類 ★★ abstract class AbstractPerson{// 抽象類中可以定義沒有方法體的方法void log();// 抽象類中可以包含有方法體的方法void log2(){print("AbstractPerson");}}// 繼承抽象類 , 必須實現抽象類中的抽象方法 class Student3 extends AbstractPerson{@overridevoid log() {print("Student3");}}// 抽象類繼承抽象類 , 不必實現抽象類中的抽象方法 abstract class Student4 extends AbstractPerson{}

Student2 有構造函數 , 不是 mixins ;

AbstractPerson 符合 mixins 三個條件 , 是 mixins ; 抽象類也可以是 mixins ;

Student3 不是繼承自 Object , 不是 mixins ;

Student4 不是繼承自 Object , 不是 mixins ;





二、mixins 示例



代碼示例 : 通過 mixins 為 Student5 類添加了 AbstractPerson 特征 , 在開發中為現有的類賦予已經存在的 mixins 類的特性 ;

// 定義 Dart 類 // 與 Java 語言類似, 所有的類默認繼承 Object 類 class Person{// 定義變量String name;int age;// 私有字段int _achievement;// 標準構造方法, 下面的方法是常用的構造方法寫法Person(this.name, this.age);// get 方法 : 設置私有字段 achievement 的 get 方法,// 讓外界可以訪問 Person 對象的 _achievement 私有成員int get achievement => _achievement;// set 方法 : 設置私有字段 achievement 的 set 方法,// 讓外界可以設置 Person 對象的 _achievement 私有成員值set achievement(int achievement){_achievement = achievement;}// 靜態方法 , 通過類名調用static log(){print("log");}// 重寫父類的方法@overrideString toString() {return "$name : $age";} }// 定義抽象類 abstract class AbstractPerson{// 抽象類中可以定義沒有方法體的方法void log();// 抽象類中可以包含有方法體的方法void log2(){print("AbstractPerson");}}// ★★ 通過 mixins 為 Student5 類添加了 AbstractPerson 特征 // ★★ 在開發中為現有的類賦予已經存在的 mixins 類的特性 class Student5 extends Person with AbstractPerson{Student5(String name, int age) : super(name, age);@overridevoid log() {// TODO: implement log}}



四、 相關資源



參考資料 :

  • Flutter 官網 : https://flutter.dev/
  • Flutter 開發文檔 : https://flutter.cn/docs ( 強烈推薦 )
  • 官方 GitHub 地址 : https://github.com/flutter
  • Flutter 中文社區 : https://flutter.cn/
  • Flutter 實用教程 : https://flutter.cn/docs/cookbook
  • Flutter CodeLab : https://codelabs.flutter-io.cn/
  • Dart 中文文檔 : https://dart.cn/
  • Dart 開發者官網 : https://api.dart.dev/
  • Flutter 中文網 ( 非官方 , 翻譯的很好 ) : https://flutterchina.club/ , http://flutter.axuer.com/docs/
  • Flutter 相關問題 : https://flutterchina.club/faq/ ( 入門階段推薦看一遍 )

博客源碼下載 :

  • GitHub 地址 : https://github.com/han1202012/flutter_app_hello ( 隨博客進度一直更新 , 有可能沒有本博客的源碼 )

  • 博客源碼快照 : https://download.csdn.net/download/han1202012/15447573 ( 本篇博客的源碼快照 , 可以找到本博客的源碼 )

總結

以上是生活随笔為你收集整理的【Flutter】Dart 面向对象 ( mixins 特性 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。