Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.05.2012, 23:08
PlutDem вне форума Посмотреть профиль Отправить личное сообщение для PlutDem Найти все сообщения от PlutDem
  № 1  
Ответить с цитированием
PlutDem
 
Аватар для PlutDem

Регистрация: Feb 2012
Сообщений: 212
По умолчанию Статический конструктор?

Здравствуйте, у меня есть класс с статической переменной в которой находится массив. У наследников этого класса будет разное содержимое этого массива. Как можно заполнить массив у наследников класса без вызова специальной инициализирующей функции? Да и просто если у родственных классов есть одинаковые статичные переменные, то как и назначит различные значения?
Код AS3:
public class SMClast{
 
    public static var allowedTypes:Vector.<Class> = new Vector.<Class>;
 
    public function SMClast() {
 
    }
 
}
Насколько я понимаю, так делать нельзя?
Код AS3:
public class DType extends SMClast{
 
    public static var allowedTypes:Vector.<Class> = new Vector.<Class>(Sth1,Sth2,Sth3);
 
    public function DType () {
 
    }
 
}


Последний раз редактировалось PlutDem; 22.05.2012 в 23:27.
Старый 22.05.2012, 23:14
Korchy вне форума Посмотреть профиль Отправить личное сообщение для Korchy Найти все сообщения от Korchy
  № 2  
Ответить с цитированием
Korchy
 
Аватар для Korchy

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
Статический элемент класса существует всегда. Соответственно и для класса-наследника он должен существовать без дополнительной переинициализации. Просто заполняете массив в наследнике и все.
__________________
interplanety


Последний раз редактировалось Korchy; 22.05.2012 в 23:20.
Старый 22.05.2012, 23:23
HardCoder вне форума Посмотреть профиль Отправить личное сообщение для HardCoder Найти все сообщения от HardCoder
  № 3  
Ответить с цитированием
HardCoder
 
Аватар для HardCoder

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
Цитата:
Сообщение от PlutDem Посмотреть сообщение
класс с статической переменной в которой находится массив. У наследников этого класса будет разное содержимое этого массива.
Вам не кажется это глупостью?

Добавлено через 1 минуту
Цитата:
Сообщение от PlutDem Посмотреть сообщение
Насколько я понимаю, так делать нельзя?
Код AS3:
public class DType extends SMClast{
 
    public static var allowedTypes:Vector.<Class> = new Vector.<Class>(Sth1,Sth2,Sth3);
 
    public function Mount() {
 
    }
 
}
Зато можно вот так:
Код AS3:
public class DType extends SMClast{
 
    public static var allowedTypes:Vector.<Class> = new <Class>[Sth1,Sth2,Sth3];
 
    public function Mount() {
 
    }
 
}
__________________
Я мало чего умею, но зато хорошо умею учиться...

Старый 22.05.2012, 23:25
PlutDem вне форума Посмотреть профиль Отправить личное сообщение для PlutDem Найти все сообщения от PlutDem
  № 4  
Ответить с цитированием
PlutDem
 
Аватар для PlutDem

Регистрация: Feb 2012
Сообщений: 212
А если не планируется создавать экземпляр класса или значение статической переменной нужно до создания объекта?

Старый 22.05.2012, 23:28
HardCoder вне форума Посмотреть профиль Отправить личное сообщение для HardCoder Найти все сообщения от HardCoder
  № 5  
Ответить с цитированием
HardCoder
 
Аватар для HardCoder

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
Какого объекта? Статическая переменная - это переменная класса, а не экземпляра. Даже, не создавая объект DType, переменная allowedTypes сразу будет доступна:
Код AS3:
trace(DType.allowedTypes)
__________________
Я мало чего умею, но зато хорошо умею учиться...

Старый 22.05.2012, 23:28
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 6  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Статика не наследуется. Если был класс А и была у него стат. переменная А.б, то у его наследника Б не будет автоматом стат. переменной Б.б.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 22.05.2012, 23:34
Korchy вне форума Посмотреть профиль Отправить личное сообщение для Korchy Найти все сообщения от Korchy
  № 7  
Ответить с цитированием
Korchy
 
Аватар для Korchy

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
Цитата:
Сообщение от -De- Посмотреть сообщение
Статика не наследуется. Если был класс А и была у него стат. переменная А.б, то у его наследника Б не будет автоматом стат. переменной Б.б.
Действительно. Что-то я ступил совсем.
__________________
interplanety

Старый 22.05.2012, 23:41
PlutDem вне форума Посмотреть профиль Отправить личное сообщение для PlutDem Найти все сообщения от PlutDem
  № 8  
Ответить с цитированием
PlutDem
 
Аватар для PlutDem

Регистрация: Feb 2012
Сообщений: 212
Я аж не успеваю комменты редактировать Лучше уж, опиши задачу:
Есть несколько родственных классов и у них есть функция, которая проверяет передаваемый ей объект на принадлежность к одному из классов. Список этих классов у каждого класса свой и должен хранится в статическом свойстве этого класса.
Вот например, есть коробка в которую можно складывать только помидоры и молотки, а в другую коробку можно складывать только телефоны, цветы, бумагу и т.п. Нужно же где то хранить список того, что можно положить в коробку.


Последний раз редактировалось PlutDem; 22.05.2012 в 23:47.
Старый 22.05.2012, 23:48
Korchy вне форума Посмотреть профиль Отправить личное сообщение для Korchy Найти все сообщения от Korchy
  № 9  
Ответить с цитированием
Korchy
 
Аватар для Korchy

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
Так?
Код AS3:
	public class A  {
		public static var a:Array = new Array(0,1);
		public function A() {
		}
	}
 
	public class B extends A {
		public static var a:Array = new Array(2,3);
		public function B() {
		}
	}
 
trace(A.a[0]);
trace(A.a[1]);
trace(B.a[0]);
trace(B.a[1]);
 
0
1
2
3
__________________
interplanety

Старый 22.05.2012, 23:50
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 10  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
Нужно же где то хранить список того, что можно положить в коробку.
В отдельном классе? Коробка не должна "думать", что в нее кладут. Максимум она имеет пластырь с надписью.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Создать новую тему Ответ Часовой пояс GMT +4, время: 06:22.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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