Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   как вызвать сеттер суперкласса? (http://www.flasher.ru/forum/showthread.php?t=94772)

whiteRed 19.04.2007 14:38

как вызвать сеттер суперкласса?
 
Код:

class First{
    private var $num:Number;
    public function get num():Number{
        return $num;
    }
    public function set num(n:Number){
        $num = n;
    }
   
    function First(n:Number){
        num = n;
    }
}

Код:

class Second extends First
{
    function Second(n:Number){
        super(n);
    }
   
    public function set num(n:Number){
        trace("second");
        super.num = n; //не работает
//      super.num(n); //тоже не работает
       
    }
   
}


etc 19.04.2007 14:51

А никак, кривая реализация сеттеров в AS2.

whiteRed 19.04.2007 14:53

чьерт поберьи:mad:

etc 19.04.2007 14:56

Я их не наследовал никогда, но слышал о проблемах. Видимо, это одна из них.

iNils 19.04.2007 15:00

А как вы поняли, что super.num = n не работает?

whiteRed 19.04.2007 15:07

Цитата:

Сообщение от iNils
А как вы поняли, что super.num = n не работает?

Код:

var q1 = new First(45);
var q2 = new Second(54);

trace(q1.num);  //45
trace(q2.num);  //undefined


whiteRed 19.04.2007 15:21

Код:

class Second extends First
{
        function Second(n:Number){
                super(n);
        }
       
        public function set num(n:Number){
                $num = n;               
        }
}

его даже просто переопределить нельзя!!

wvxvw 19.04.2007 15:22

Код:

class First {
        private var n:Number;
        function First(_n:Number){
                __n = _n;
        }
        function set __n(i:Number):Void {
                this.n = i;
        }
        function get __n():Number {
                return this.n;
        }
}

Код:

class Second extends First {
        function Second(n:Number){
                super();
                __n = n;
        }
        function set __n(i:Number):Void {
                this.n = i;
        }
        function get __n():Number {
                return this.n;
        }
}

Код:

var _l1:First = new First(10);
var _l2:Second = new Second(20);
trace(_l1.__n); // 10
trace(_l2.__n); // 20

have fun! :D

etc 19.04.2007 15:38

Ну копипастить описание сеттеров/геттеров каждый сможет :D

wvxvw 19.04.2007 15:45

А что тогда нужно было?.. переопределить? так можно и переопределить или использовать из суперкласса?
Если использовать из суперкласса - просто закоменть сет\гет во втором классе, все будет работать точно так же, если изменить, ну так измени =)
просто super() не принимает никаких параметров, если я ничего не путаю.


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

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