中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android開發Dart?Constructors構造函數怎么使用

發布時間:2022-05-17 09:10:06 來源:億速云 閱讀:162 作者:iii 欄目:開發技術

這篇文章主要講解了“Android開發Dart Constructors構造函數怎么使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Android開發Dart Constructors構造函數怎么使用”吧!

什么是構造函數?

構造函數是用于初始化對象的特殊方法。在創建類的對象時調用構造函數。

默認情況

final ehe = MyClass(); // Creates an instanceclass MyClass {
  MyClass(); // Fires immediately when created (this guy is cons.)
}

在構造函數中只有一個規則

也就是說;

與它的類名一樣命名它! !

好的,我們知道了! 但是…

我們具體有哪些類型的構造函數類型?

缺省構造函數 ー Class()

// Default Constructor
// 默認什么都不做
class User {
  String name = 'ehe';
  User();
}
///
// Constructor with parameters
// 構造時初始變量
class User {
  String name;
  User(this.name);
}
///
// Constructor with the initial method
// 構造函數內寫入你的邏輯
class User {
  String name;
  User(this.name) {
    // do some magic
  }
}
/
// Constructor with assertion
// 使用 Asserts 去檢查你的規則
class User {
  String name;
  User(this.name) : assert(name.length > 3);
}
// Constructor with initializer
// 初始化你的變量
class User {
  static String uppercase(String e) => e.toUpperCase();
  String name;
  User(name) : name = yell(name);
  static String yell(String e) => e.toUpperCase();
}
/
// Constructor with super()
// override 變量
class Person {
  String id;
  Person(this.id);
}
class User extends Person {
  String name;
  User(this.name, String id) : super(id);
}
/
// Constructor with this()
// 命名構造函數
class User {
  String name;
  int salary;
  User(this.name, this.salary);
  User.worker(String name) : this(name, 10);
  User.boss(String name) : this(name, 9999999);
}

私有構造函數ー Class._()

您可以使用 _ 創建私有構造函數,但是它的好處是什么呢?

讓我們來看一個例子!

class Print {
  static void log(String message) => print(message);
}
Print.log('ehe');
// 你想寫一個像這樣的util,但有一個問題,因為你也可以創建一個我們不想要的實例。
Print(); // 在這種情況下,這是絕對不必要的
// 如何防止這種情況?答案是私有構造函數!
class Print {
  Print._(); // 這將阻止創建實例
  static void log(String message) => print(message);
}
Print(); // 這將給出現在的編譯時錯誤
Your instance is safe now!

所以基本上你可以阻止創建一個實例!

命名構造函數ー class.Named()

您可以在一個 class 中創建不同類型的實例

For example;

例如:

class User {
  String name;
  int salary;
  User.worker(this.name) : salary = 10;
  User.boss(this.name) : salary = 99999999;
}

私有命名構造函數ー class._Named ()

您可以很容易地清洗您的實例!

class User {
  String name;
  int salary;
  User.worker(this.name) : salary = 10;
  User.boss(this.name) : salary = 99999999;
  User._mafia(this.name) : salary = 9999999999999;
}

除了玩笑之外,這是非常有幫助的!

例如,您可以使用私有構造函數創建單例對象!

class User {
  User._privateConstructor();
  static final User instance = User._privateConstructor();
}

注意

你可以在一些項目中看到 _internal 內部關鍵字。沒什么特別的。_internal construction 只是一個 ._internal 通常給類私有的構造函數的名稱(不需要這個名稱)。可以使用任何 Class._someName 結構創建一個私有構造函數)。

Const Constructor ー const Class()

您可以使用 const constructor! 構造函數使類變為不可變的!

常量構造函數是一種優化!編譯器使對象成為不可變的,為所有 Text('Hi!') 對象。ー Frank Treacy

const user = User('ehe');
class User {
  final String name;
  const User(this.name);
}

工廠構造函數ー factory class Class()

我們說過施工人員不允許回來,你猜怎么著?

工廠建造者可以!

工廠建造者還能做什么?

您根本不需要創建一個新實例!您可以調用另一個構造函數或子類,甚至可以從緩存返回一個實例!

最后,對工廠的小小警告!

無法調用超類構造函數 (super())

簡單的例子

class User {
  final String name;
  User(this.name);
  factory User.fromJson(Map<String, dynamic> json) {
    return User(json["name"]);
  }
}
// Singleton Example
class User {
  User._internal();
  static final User _singleton = Singleton._internal();
  factory User() => _singleton;
}

感謝各位的閱讀,以上就是“Android開發Dart Constructors構造函數怎么使用”的內容了,經過本文的學習后,相信大家對Android開發Dart Constructors構造函數怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

郧西县| 会东县| 天祝| 公主岭市| 始兴县| 察隅县| 营山县| 三江| 陇西县| 通道| 千阳县| 都江堰市| 广丰县| 土默特右旗| 西乌珠穆沁旗| 巴彦淖尔市| 游戏| 盐津县| 辽中县| 安多县| 东乌珠穆沁旗| 巴林右旗| 大渡口区| 景宁| 苍南县| 北碚区| 札达县| 高台县| 丹东市| 阿鲁科尔沁旗| 姚安县| 会宁县| 苏州市| 姜堰市| 凤城市| 萝北县| 崇礼县| 定州市| 宝鸡市| 于都县| 大同市|