Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   XML base class is final (http://www.flasher.ru/forum/showthread.php?t=143916)

in4core 29.08.2010 16:44

XML base class is final
 
Код AS3:

package flash.utils {
        import flash.xml.*;
        public class xmlParser extends XML{
                public function xmlParser () {
                        trace('class loaded');
                }
        }
}

Насколько я понял final классами нельзя расширять. ( override невозможен ). Так как правильно писать в этом случае, если я хочу сделать класс на основе XML ?

Hidest 29.08.2010 17:30

Может, композиция вам поможет. Используйте объект XML в приватном поле своего класса (который будет наследоваться от Object или EventDispatcher, если нужно.). В своем классе перепишите те методы XML, которые хотите использовать по-своему, вызывая из них XML#method, где нужно. А в остальном делайте свой функционал...

in4core 29.08.2010 17:35

возможно. тоесть типа

Код AS3:

package flash.utils {
        import flash.xml.*;
        public class xmlParser extends Object{
                private var xml:XML = new XML();
                public function xmlParser () {
                        trace('class loaded');
                }
private function xmlloader() {
      xml.load(...)
            }
        }
}


Hidest 29.08.2010 17:37

Ну да, в этом плане. Дергаете методы и свойства XML, когда нужно, а в остальном пользуетесь логикой своего класса (с необходимыми проверками и т.д.)

Так наглядней (extends Object не надо, он и так от него наследуется):

Код AS3:

package
{
      public class xmlParser
      {
                private var _xml:XML;
 
                public function xmlParser ()
                {
                      _xml = new XML();
                      trace('class loaded');
                }
 
                public function load()
                {
                      ...
                      _xml.load(...);
                      ...
                }
      }
}


in4core 29.08.2010 18:14

Угу понятно. значит экстенды вообще не нужны. Выходит и импортировать final классы тоже не нужно?! интересно. А если я создам final класс, мне его тоже импортировать не нужно он как глобал чтоли будет?!

BlooDHounD 29.08.2010 19:08

какое отношение final имеет к import? XML сам по себе глобальный класс.

in4core 29.08.2010 19:19

вот это и надо было узнать. ок

incvizitor 30.08.2010 14:10

in4core, импортировать не надо классы расположенные в пакете верхнего уровня (String, XML, RegExp и т.д.), а также классы расположенные в одном пакете с классом который Вы пишите.

final обозначает только то что от класса нельзя наследовать. В книге Мука написано что такие классы работают немного быстрее.


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

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