![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Регистрация: Mar 2013
Сообщений: 290
|
Всем привет.
Вот здесь Wolsh вкратце описал принципы видимости свойств и методов. Однако, некоторые практические следствия из этого мне неочевидны. Рассмотрим на примере. Есть два класса ClassA (он же документ-класс), и ClassB. ClassA содержит в себе экземпляр ClassB, то есть получаем простейший пример композиции. ClassA.as: package { import flash.display.*; //--- ClassA ---// public class ClassA extends Sprite { public var classA_sv1:String = "Свойство1 класса А"; //--- Constructor ---// public function ClassA() { trace("<<< Экземпляр класса ClassA создан >>>"); classB = new ClassB(); //создаем экземпляр класса B trace(classB.classB_get(2)); //обращаемся к свойствам ClassB через его же метод //--- Method: classA_get() ---// public function classA_get() { trace("Возвращено:"); return classA_sv1; } } } package { import flash.display.*; //--- ClassB ---// public class ClassB extends Sprite { private var classB_sv1:String = "Свойство1_класса_B"; private var classB_sv2:String = "Свойство2_класса_B"; //--- Constructor ---// public function ClassB() { trace("((( Экземпляр класса ClassB создан )))"); } //--- Method: classB_get() ---// public function classB_get(n:uint):String { if (n == 1) { trace("Возвращено:"); return classB_sv1; } else if (n == 2) { trace("Возвращено:"); return classB_sv2; } else { trace("Возвращено:"); } return "Cвойство неопределено"; } } } Цитата:
1. Обратиться из конструктора ClassB к свойству classA_sv1 (или методу classA_get()) класса ClassA. 2. Обратиться из конструктора ClassB к самому экземпляру ClassA. 1. По первой задаче, я пробовал в конструкторе ClassB вот такие строки: trace("classA_sv1 = ", classA_sv1); //ERROR: 1120: Access of undefined property classA_sv1. trace("classA_sv1 = ", classA_get()); //ERROR: 1180: Call to a possibly undefined method classA_get. 2. По второй задаче, у меня что-то даже нет идей. Имя экземпляра документ-класса мы не знаем... Вероятно, нужны какие-то специальные приемы, типа оператора super(). |
![]() |
Часовой пояс GMT +4, время: 11:45. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| видимость , классы , композиция , методы , свойства |
|
|