Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   getter & setter (http://www.flasher.ru/forum/showthread.php?t=152597)

sl1p 20.03.2011 07:51

getter & setter
 
Читал книгу, не могу найти пока что где это было, но там объяснялось как можно было сделать удобный геттер сеттер.. К примеру:

Код AS3:

class Boo
{
        private var name = 'Boo';
 
    public function get name()
    {
        return this.name;
    }
}

Но...

Код:

D:\FLASH\Projects\vzoo\src\zoo\Zoo.as, Line 16        1023: Incompatible override.
как же тогда?

udaaff 20.03.2011 13:43

Код AS3:

public class Boo
{
    private var _name = 'Boo';
 
    public function get name():String
    {
        return this._name;
    }
 
    public function set name(value:String):void
    {
        this._name = value;
    }
}


CrazyFlasher 20.03.2011 13:49

зачем this?

КорДум 20.03.2011 13:52

Цитата:

итал книгу, не могу найти пока что где это было
Страница 110.

udaaff 20.03.2011 14:22

Цитата:

Сообщение от CrazyFlasher (Сообщение 982054)
зачем this?

Мне так понятнее.

iCluster 20.03.2011 15:56

Ммм.. не совсем понятно, отчего у вас ошибка в классе Zoo.as, а вы выкладываете class Boo.
Судя по ошибке у вас в классе происходит переопределение метода родительского класса. Проверьте нет ли в родительском классе методов с таким названием. Попробуйте использовать override или изменить имя метода.

VitaliyKrivtsov 20.03.2011 16:40

iCluster,
Код AS3:

D:\FLASH\Projects\vzoo\src\zoo\Zoo.as, Line 16        1023: Incompatible override.

так - то ошибка действительно левая, но класс Boo наследуется только от объекта, классом Zoo там и не пахнет а значит переопределение свойств или методов и не может быть.
Ошибка выскакивает лиш потому что имя get/set метода совпадает с приватной переменной класса
Код AS3:

private var name = 'Boo';


sl1p 20.03.2011 17:42

Цитата:

Сообщение от udaaff (Сообщение 982050)
Код AS3:

public class Boo
{
    private var _name = 'Boo';
 
    public function get name():String
    {
        return this._name;
    }
 
    public function set name(value:String):void
    {
        this._name = value;
    }
}


т.е. я так понял имя функции(get x) должно отличаться от имени переменной?..

udaaff 20.03.2011 17:48

Цитата:

Сообщение от sl1p (Сообщение 982149)
т.е. я так понял имя функции(get x) должно отличаться от имени переменной?..

Конечно.

sl1p 20.03.2011 17:51

класс ничего не наследует) я написал просто пример когда возникает ошибка)

хм не совсем удобно.. удобнее было бы если бы можно было на вызов переменной навесить своего рода заглушку ввиде геттера если уже в существующем классе необходимо будет внести какието изменения.. Но придётся менять имя переменной:(


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

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