Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Get- и set-методы с атрибутами управления доступом (http://www.flasher.ru/forum/showthread.php?t=144715)

honest_man 19.09.2010 15:48

Get- и set-методы с атрибутами управления доступом
 
Возник вопрос! Правда ли, что get- и set-методы с идентичным идентификатором должны иметь и идентичные уровни доступа к ним?

Т.е. Почему нельзя сделать, к примеру, set-метод с уровнем доступа internal, а get-метод с public? Придется присваивать различные idы?

TWETTI 19.09.2010 15:55

По моему для get и set метода можно применять разные уровни доступа.

honest_man 19.09.2010 16:02

Код AS3:

// Код методов внутри одного класса:
private var nameOfDr:String ;
 
public function get getSetName ():String {
return this.nameOfDr ;
}
internal function set getSetName ( localName:String ):void {
this.nameOfDr = localName ;
}

Код AS3:

// Код вызова методов внутри другого класса:
trace(localObjectVar.getSetName = "New_Name");
trace(localObjectVar.getSetName);

Кто может проверить? Ато мож у меня среда старая...

TWETTI 19.09.2010 16:09

Переменные nameOfDr и localName не имеют типа.
У Get метода getSetName и у Set метода getSetName не определён тип возвращаемого значения.

honest_man 19.09.2010 16:13

Да ) Но это не влияет, я опустил для лучшей читабельности. А в остальном работает?

TWETTI 19.09.2010 16:34

Нет, не работает. Из другого класса нельзя напрямую обратиться к геттераи и сеттерам.

honest_man 19.09.2010 16:39

Ну как же, если присвоить одинаковые моды доступа то все работает... если обеим присвоить public или internal то у меня ошибок не выдает. Но ведь хочется назначить им разные уровни доступа(

alatar 19.09.2010 16:39

Цитата:

Правда ли, что get- и set-методы с идентичным идентификатором должны иметь и идентичные уровни доступа к ним?
Правда. Исключение если они в разных неймспейсах.

Zebestov 19.09.2010 16:44

а зачем?

expl 19.09.2010 17:13

Как это зачем - например запретить кому попало менять объект
В таких случаях остается только либо сеттер, либо геттер сделать простым методом:
Код AS3:

// Код методов внутри одного класса:
private var nameOfDr:String ;
 
public function get getSetName ():String {
    return this.nameOfDr ;
}
internal function setGetSetName ( localName:String ):void {
    this.nameOfDr = localName ;
}

Цитата:

По моему для get и set метода можно применять разные уровни доступа.
Что-то не выходит.
Это с интерфейсами попроще - там в одном можно только геттер указать, в другом - только сеттер, в третьем и то и другое,
и все будет компилироваться.


Часовой пояс GMT +4, время: 18:13.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.