Оператор function get
Объявляет методы доступа для нового свойства в классе или интерфейсе. Оператор 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. Это значение должно совпадать с типом параметров метода доступа set, если он определен.body
Необязательный. Один или несколько операторов, которые определяют функциональность метода доступа get.
Заметки
Доступ к свойствам объекта осуществляется практически тем же способом, каким выполняется доступ к полям, однако свойства предоставляют больше возможностей управления значениями, которые сохраняются и извлекаются в объекте. В зависимости от сочетания методов доступа к свойствам get и set, определенных в классе, свойства могут быть доступны только для чтения, только для записи или одновременно для чтения и записи. Свойства часто используются в тех случаях, когда необходимо обеспечить, чтобы в полях с модификаторами private или protected сохранялись только допустимые значения. Невозможно назначить значение свойству, предназначенному только для чтения, или считать значение свойства, предназначенного только для записи.
Метод доступа get, для которого необходимо указать тип возвращаемых данных, не принимает аргументов. Метод доступа get можно использовать в сочетании с методом доступа set, который принимает один аргумент и не имеет типа возвращаемых данных. Если для свойства используются оба метода доступа, то тип возвращаемых данных метода get должен совпадать с типом аргумента метода set.
Для свойства может быть задан метод доступа get или set. Можно также указать оба метода. Пользовательские атрибуты, которые применяются к свойству в целом, может иметь только метод доступа get (или метод доступа set, если метод get не определяется). И метод get, и метод set могут иметь модификаторы и пользовательские атрибуты, которые применяются к отдельному методу доступа. Методы доступа к свойству нельзя перегружать, однако их можно скрыть или переопределить.
Свойства можно указывать в определении 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.