Модераторы: SoWa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по классам и наследованию, классы, наследование, доступ к свойствам 
:(
    Опции темы
egoistu
Дата 2.4.2011, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 16.6.2009

Репутация: нет
Всего: нет



Всем привет...

Не судите строго... возможно кому-то вопрос покажется нубский...

И так... имеется...

Код

public class A {
    public var b:B;
    public var c:C;

    public var t:String = 'test string';

    public function A() {
         ...
         this.b = new B;
         this.c = new C;
         ...
    }
}


public class B extends A {
    public function B() {
        trace(this.t); // Выводит "test string"
        trace(this.c); // null :(      А хотелось бы чтоб здесь был экземпляр обьекта C
    }
}


классы раскиданы по отдельным файлам...
System/A.as
System/B.as
System/C.as

у всех Package System...

начало в 1 фраме флэшки...
Код

new A(this.stage);



Вопрос...
какое различие между свойством типа String и Object...
почему первое(string) в видно из child а второе(object) нет :(
?

Спасибо за внимание ;)
Гуд лак и творческого вдохновения... smile

Добавлено через 13 минут и 48 секунд
перекурил...
понял...

различие в том что:

Код

    ...
    public var b:B;   // Не обьявлен класс
    public var t:string = 'test string';   // Обьявлена сразу...
    ...


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

Код

    ...
    public var b:B = new B;
    ...


то получается бесконечный цикл :(

помогите с решением...
PM MAIL   Вверх
egoistu
Дата 2.4.2011, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 16.6.2009

Репутация: нет
Всего: нет



Error: Error #1023: Stack overflow occurred.
    at System::A()
    at System::B()
    at System::A()
    at System::B()
PM MAIL   Вверх
KaraKum
Дата 2.4.2011, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



Приветствую.
Эту проблему можно решить только если удалить этот код  smile 
Как я понимаю это пример для теста - на практике такой ситуации быть не может - получается "что первее - курица или яйцо".
PM MAIL WWW   Вверх
egoistu
Дата 2.4.2011, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 16.6.2009

Репутация: нет
Всего: нет



Цитата(KaraKum @ 2.4.2011,  21:23)
Приветствую.
Эту проблему можно решить только если удалить этот код  smile 
Как я понимаю это пример для теста - на практике такой ситуации быть не может - получается "что первее - курица или яйцо".

ну спасибо...
обнадёжил... smile
PM MAIL   Вверх
SoWa
Дата 3.4.2011, 07:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 1
Всего: 74



Цитата(egoistu @  2.4.2011,  17:59 Найти цитируемый пост)
различие в том что:
...    public var b:B;   // Не обьявлен класс    
public var t:string = 'test string';   // Обьявлена сразу...

Нет, на самом деле класс объявлен. Но экземпляр не создается для переменной b(появляется ссылка на null), а для t создается и там лежит ссылка на String "test string".
Эта особенность должна всегда быть в голове, и в зависимости от задачи - либо сразу создавать объекты, либо попозжа.
А KaraKum прав, тут проблема курицы и яйца. Если не секрет - откуда такой код?


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
egoistu
Дата 3.4.2011, 12:27 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 16.6.2009

Репутация: нет
Всего: нет



Цитата(egoistu @  2.4.2011,  17:59 Найти цитируемый пост)

Но экземпляр не создается для переменной b(появляется ссылка на null), а для t создается и там лежит ссылка на String "test string"


это плохо...

Цитата

Если не секрет - откуда такой код?


сам пробовал... smile


я програмирую на PHP...
у меня есть своя мини-чмс...
она работает по такому принципу...

есть родительский класс...
в нем содержатся ссылки на все дочерные классы(модули)
и из любого чайлда есть возможность менять, работать с ранее созданым классом...
в принципе получается что-то на похожее на один большой класс...
и в нем все что создавалось по ходу работы... 
из любой точки программы есть доступ к любой другой точке...
без надобность создавать новый экземпляр класса...

там... в PHP это отлично работает...
за счёт того что каждый модуль инициализируется только один раз
(и только если его кто-то запрашивает... там перегрузка помогает... 
если нет экземпляра, он создаётся в родителе...)
всё приложение работает очень быстро... и с минимальными затратами ресурсов

тут (в AS3) я так понял что такое не прокатит...
печально... но не страшно... сделаю по другому...
буду передавать ссылку на МЭЙН класс в конструктор...
без наследования...

просто так было-б удобнее...

...
огромное спасибо за то что просветили smile
всем удачи и много интересных и уникальных проектов ;)
PM MAIL   Вверх
SoWa
Дата 3.4.2011, 17:41 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 1
Всего: 74



Цитата(egoistu @  3.4.2011,  12:27 Найти цитируемый пост)
буду передавать ссылку на МЭЙН класс в конструктор...

Да, известный костыль smile Но лучше придумать архитектуру так, чтобы вообще без такой штуки работать.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | ActionScript 3 | Следующая тема »


 




[ Время генерации скрипта: 0.0451 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.