Просмотр полной версии : Можно ли получить переменную из главного класса
grafillo!
21.07.2014, 20:57
У меня есть главный класс я получаю переменную и она используется в ещё одном классе, чтобы не создавать две переменных я её присваиваю переменной подкласса и использую в главном классе тоже, можно ли получить из подкласса доступ к переменным мэйн класса? Кароч можно ил сделать прямее?
мэйн класс {
подкласс.переменная = spisok.message.@price;
количество = 5* подкласс.переменная;
}
подкласс{
вар:переменная;
}
Можно сделать эту переменную static public, тогда доступ к ней будет доступен везде, просто через имя класса, в котором она объявлена.
grafillo!
21.07.2014, 21:12
Можно сделать эту переменную static public, тогда доступ к ней будет доступен везде, просто через имя класса, в котором она объявлена.
ну так у меня и так она доступна через имя класса, тем более какое имя у главного класса?
LifeIsRhythm
21.07.2014, 21:23
Вроде три года уже учите, а вопросы, как после прочтения половины книги Мука.
Обычно, если в приложении значение определенного свойства требуется в нескольких местах,
но получить доступ красивым способом не получается, то обычно делают статический класс ( фасад ).
Добавлено через 52 секунды
А вообще можно и две переменных создать и даже три, приложение они точно не положат.
Добавлено через 4 минуты
И о чем Вы думали, когда писали "сделать прямее"? Что в программировании означает "прямее"?
Допустим у вас есть какой-то класс, возьмём в пример главный класс Main. Если вы создадите в нём статическую, публичную переменную, например (код в Main классе)
static public var mainVar:String="Статическая переменная Main класса";
то в любом классе вашего проекта, вы можете обратиться к этой переменной таким образом, например (код в любом классе проекта)
trace(Main.mainVar);//Статическая переменная Main класса
grafillo!
21.07.2014, 21:34
Вроде три года уже учите, а вопросы, как после прочтения половины книги Мука.
Обычно, если в приложении значение определенного свойства требуется в нескольких местах,
но получить доступ красивым способом не получается, то обычно делают статический класс ( фасад ).
Добавлено через 52 секунды
А вообще можно и две переменных создать и даже три, приложение они точно не положат.
Добавлено через 4 минуты
И о чем Вы думали, когда писали "сделать прямее"? Что в программировании означает "прямее"?
сделать прямее значит объявить переменную в главном классе один раз и получать отовсюду к ней доступ х)
Добавлено через 1 минуту
Допустим у вас есть какой-то класс, возьмём в пример главный класс Main. Если вы создадите в нём статическую, публичную переменную, например (код в Main классе)
static public var mainVar:String="Статическая переменная Main класса";
то в любом классе вашего проекта, вы можете обратиться к этой переменной таким образом, например (код в любом классе проекта)
trace(Main.mainVar);//Статическая переменная Main класса
ну я и так сделал почти, хотя да наверное из третьего класса моим способом эту переменную не получить х)
grafillo, обратите внимание, что код AS3 должен обрамляться тегами , для псевдокода можно применить тег, сохраняющий первоначальное форматирование: . На первый раз я сам отредактировал ваше сообщение.
Добавлено через 11 минут
сделать прямее значит объявить переменную в главном классе один раз и получать отовсюду к ней доступ х)
Глобальный доступ — порочная практика в рамках ООП и нужны достаточно веские причины, чтобы ею все-таки воспользоваться.
grafillo!
22.07.2014, 00:17
Глобальный доступ — порочная практика в рамках ООП и нужны достаточно веские причины, чтобы ею все-таки воспользоваться.
а что делать если переменная используется в нескольких классах, как построить структуру приложения? х)
GrafMine
22.07.2014, 11:49
Доставать переменные можно и с родительских классов, только это не совсем правильно по принципам ООП :)
например через диспатч или через гетер, как вам удобней, а чтоб во всех классах была переменная то нужно просто присваивать ссылку в том классе где вы хотите использовать её.
У тс мусор в голове!
Что такое под класс? Наследуемый? Он имеет все переменные супер-родителя!
Не все. К private не имеет.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.