flutter dart 類的建構函式

2021-09-11 13:22:35 字數 3176 閱讀 9607

dart4flutter -01 – 變數, 型別和 函式

dart4flutter – 02 –控制流 和異常

dart4flutter – 03 – 類和泛型

dart4flutter – 04 – 非同步和庫

dart4flutter -拾遺01 - flutter-dart環境搭建

flutter入門 - 狀態管理

flutter 入門例項1

通過建立乙個和類名相同的函式宣告乙個建構函式(除此之外還有命名建構函式)。

建構函式通常用來建立乙個類的例項。

class

point

}複製**

this關鍵字指向當前例項

將建構函式的引數賦值給例項變數太常見了,dart有乙個語法糖使這種情況更加便捷:

class point 

複製**

default constructors 預設的建構函式

如果你不宣告建構函式,系統將提供乙個預設的建構函式。預設的建構函式沒有引數,而且將呼叫父類的無引數的建構函式。

constructors aren』t inherited 建構函式不能繼承

子類不能從父類繼承建構函式。宣告無引數的建構函式的子類只有預設的建構函式,即沒有引數、沒有名字(相對於命名建構函式)。

named constructors 命名建構函式

通過命名建構函式實現乙個類可以有多個建構函式,或者提供更有正對性的建構函式:

class

point

}複製**

注意:建構函式是不能繼承的,所以子類是不能繼承父類的命名建構函式的。如果你希望使用父類中的建構函式建立子類的例項,你必須在子類中實現父類中的建構函式。

invoking a non-default superclass constructor 呼叫父類非預設建構函式

預設,子類的構造函式呼叫父類非命名、無參建構函式。父類的建構函式在構函式體之前呼叫。如果有初始化列表,初始化在父類建構函式之前執行。總之,執行順序如下:

初始化列表

父類的無參建構函式

當前類的無參建構函式

如果父類沒有未命名、無參建構函式,那麼你必須手動呼叫父類中的乙個建構函式。注意:父類的構造函式呼叫在:之後,建構函式體之前。

在如下的例子中,employee類的構造函式呼叫他父類person的命名建構函式。

class

person

}class

employee

extends

person

}main() );

// prints:

// in person

// in employee

if (emp is person)

(emp as person).firstname = 'bob';

}複製**

因為父類建構函式的引數在呼叫之前會評估,所以引數可以是表示式,例如乙個函式呼叫。

class

employee

extends

person

複製**

注意:父類建構函式不能使用this.例如,引數可以呼叫靜態方法,但是不能呼叫例項方法。

nitializer list 初始化列表

除了呼叫父類的建構函式,你還可以在執行建構函式體之前初始化例項變數。用逗號分隔每個初始化。

// initializer list sets instance variables before

// the constructor body runs.

point.fromjson(map

json)

: x = json['x'],

y = json['y']

複製**

注意:初始化表示式的右邊不能用this.

在開發期間,你可以在出初始化列表中使用assert校驗輸入:

point.withassert(this.x, this.y) : assert(x >= 0) 

複製**

設定final欄位時,初始化列表還是很方便的。下面你的例子中,在初始化裂變中初始化三個final變數

import

'dart:math';

class

point

main()

複製**

redirecting constructors 可重定向的建構函式

有時乙個建構函式的目的只是重定向到同類的另乙個建構函式。乙個可重定向函式的函式體是空的,同時建構函式的呼叫是在冒號之後的。

class

point

複製**

constant constructors 常量建構函式

如果乙個物件是不會改變的,你可以講這些物件建立為編譯時常量。定義cost建構函式,而且要確保所有的常量都是final的。

class

immutablepoint

複製**

factory constructors 工廠建構函式

當你需要建構函式不是每次都建立乙個新的物件時,使用factory關鍵字。例如工程建構函式返回乙個在快取的中的例項或者返回乙個子類的例項。

下面的例子說明,從快取中返回例項:

class

logger

; factory logger(string name) else

} logger._internal(this.name);

void log(string msg)

}複製**

注意:工廠建構函式不能使用this

呼叫工廠建構函式,可以使用new關鍵字

var logger = logger('ui');

logger.log('button clicked');

複製**

json 在 Flutter(Dart)中的使用

首先準備好json資料 乙個json格式的使用者列表字串 string jsonstr string jsonstr1 匯入 import dart convert 使用 json.decode 將json字串轉為集合物件 json.encode 將集合物件轉為json字串 將json字串轉為dar...

String 類的構造

檔名稱 3.cpp 完成日期 2016年 5 月 24日 版本號 v1.0 專案 string類的構造 寫乙個能處理字串的類,其資料成員如下所示 include include using namespace std class string string string string string ...

類的建構函式

引題 定義乙個型別 circle,圓 成員 圓心座標 x,y 半徑radius class circle 如何讓乙個物件在被建立的時候,就賦予初始值 方法是建構函式 建構函式是類的一種特殊的成員函式 1.函式名與類名必須相同 2.沒有返回值 egclass circle 建構函式可以帶引數,也可以過...