PDA

Просмотр полной версии : Можно ли получить переменную из главного класса


grafillo!
21.07.2014, 20:57
У меня есть главный класс я получаю переменную и она используется в ещё одном классе, чтобы не создавать две переменных я её присваиваю переменной подкласса и использую в главном классе тоже, можно ли получить из подкласса доступ к переменным мэйн класса? Кароч можно ил сделать прямее?

мэйн класс {
подкласс.переменная = spisok.message.@price;

количество = 5* подкласс.переменная;
}

подкласс{
вар:переменная;
}

samana
21.07.2014, 21:09
Можно сделать эту переменную static public, тогда доступ к ней будет доступен везде, просто через имя класса, в котором она объявлена.

grafillo!
21.07.2014, 21:12
Можно сделать эту переменную static public, тогда доступ к ней будет доступен везде, просто через имя класса, в котором она объявлена.

ну так у меня и так она доступна через имя класса, тем более какое имя у главного класса?

LifeIsRhythm
21.07.2014, 21:23
Вроде три года уже учите, а вопросы, как после прочтения половины книги Мука.
Обычно, если в приложении значение определенного свойства требуется в нескольких местах,
но получить доступ красивым способом не получается, то обычно делают статический класс ( фасад ).

Добавлено через 52 секунды
А вообще можно и две переменных создать и даже три, приложение они точно не положат.

Добавлено через 4 минуты
И о чем Вы думали, когда писали "сделать прямее"? Что в программировании означает "прямее"?

samana
21.07.2014, 21:33
Допустим у вас есть какой-то класс, возьмём в пример главный класс 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 класса

ну я и так сделал почти, хотя да наверное из третьего класса моим способом эту переменную не получить х)

dimarik
21.07.2014, 23:55
grafillo, обратите внимание, что код AS3 должен обрамляться тегами , для псевдокода можно применить тег, сохраняющий первоначальное форматирование: . На первый раз я сам отредактировал ваше сообщение.

Добавлено через 11 минут
сделать прямее значит объявить переменную в главном классе один раз и получать отовсюду к ней доступ х)

Глобальный доступ — порочная практика в рамках ООП и нужны достаточно веские причины, чтобы ею все-таки воспользоваться.

grafillo!
22.07.2014, 00:17
Глобальный доступ — порочная практика в рамках ООП и нужны достаточно веские причины, чтобы ею все-таки воспользоваться.

а что делать если переменная используется в нескольких классах, как построить структуру приложения? х)

GrafMine
22.07.2014, 11:49
Доставать переменные можно и с родительских классов, только это не совсем правильно по принципам ООП :)
например через диспатч или через гетер, как вам удобней, а чтоб во всех классах была переменная то нужно просто присваивать ссылку в том классе где вы хотите использовать её.

Koopa
24.07.2014, 19:36
У тс мусор в голове!
Что такое под класс? Наследуемый? Он имеет все переменные супер-родителя!

dimarik
24.07.2014, 22:05
Не все. К private не имеет.