function get 陳述式
宣告類別中或介面中新屬性 (Property) 的存取子。 通常 function get 會與 function set 一起出現,允許讀取/寫入存取屬性。
// Syntax for the get accessor for a property in a class.
[modifiers] function get propertyname() [: type] {
[body]
}
// Syntax for the get accessor for a property in an interface.
[modifiers] function get propertyname() [: type]
引數
modifiers
選擇項。 修飾詞,控制屬性的可視性和行為。propertyname
必要項。 要建立的屬性名稱。 在類別中必須是唯一,除了 get 和 set 存取子可使用相同的 propertyname 來辨識要讀取和要寫入之外的屬性。type
選擇項。 get 存取子的傳回型別 (Return Type)。 如果已定義,這必須符合 set 存取子的參數型別。body
選擇項。 一或多個陳述式,定義 get 存取子的作業方式。
備註
物件屬性的存取方式與欄位的存取方式非常相似,除了屬性對儲存在物件中的值和由物件傳回的值允許更多的控制。 屬性可以是唯讀、唯寫或讀寫,視類別中定義的 get 和 set 屬性存取子的組合而定。 屬性通常是用來確定在 private 或 protected 欄位中只會儲存適當的值。 您不能指派值給唯讀屬性,或從一個唯寫屬性讀取值。
必須指定傳回型別的 get 存取子不具有任何引數。 get 存取子可以與 set 存取子配對,後者有一個引數且沒有傳回型別。 如果兩個存取子都用於一個屬性,get 存取子的傳回型別必須與 set 存取子的引數型別相符。
屬性可以具有 get 存取子或 set 存取子或同時擁有兩者。 只有屬性 (Property) 的 get 存取子 (或 set 存取子,如果沒有 get 存取子) 可以具有套用至整體屬性 (Property) 的自訂屬性 (Attribute)。 get 和 set 存取子都具有可套用至個別存取子的修飾詞和自訂屬性 (Attribute)。 無法多載屬性 (Property) 存取子,但是可以隱藏或覆寫存取子。
屬性可以在 interface 的定義中指定,但是在介面中無法提供實作。
範例
下列範例說明數種屬性宣告。 Age 屬性定義為讀取和寫入。 唯讀 FavoriteColor 屬性也會定義。
class CPerson {
// These variables are not accessible from outside the class.
private var privateAge : int;
private var privateFavoriteColor : String;
// Set the initial favorite color with the constructor.
function CPerson(inputFavoriteColor : String) {
privateAge = 0;
privateFavoriteColor = inputFavoriteColor;
}
// Define an accessor to get the age.
function get Age() : int {
return privateAge;
}
// Define an accessor to set the age, since ages change.
function set Age(inputAge : int) {
privateAge = inputAge;
}
// Define an accessor to get the favorite color.
function get FavoriteColor() : String {
return privateFavoriteColor;
}
// No accessor to set the favorite color, making it read only.
// This assumes that favorite colors never change.
}
var chris: CPerson = new CPerson("red");
// Set Chris age.
chris.Age = 27;
// Read chris age.
print("Chris is " + chris.Age + " years old.");
// FavoriteColor can be read from, but not written to.
print("Favorite color is " + chris.FavoriteColor + ".");
當執行此程式時,會顯示如下的輸出結果:
Chrisis 27 years old.
Favorite color is red.