Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Атрибут virtual (http://www.flasher.ru/forum/showthread.php?t=196181)

taluks 20.03.2013 17:23

Атрибут virtual
 
Какое значение несет атрибут virtual?
встретил в Бокс2Д
Код AS3:

public virtual function SayGoodbyeJoint(joint:b2Joint) : void{};


in4core 20.03.2013 19:07

Интересно . Ни разу не встречал и по-моему в справке нету такого, смотрели?

strangedk 20.03.2013 19:14

Встречал в коде native и virtual, тоже не знаю откуда, не углублялся.
Вообще среда собирает это всё даже, и не ругается.

- Тоже интересно, откуда

Hauts 20.03.2013 19:16

Ничего не делают такие модификаторы, они с расчетом на будущее, похоже, существуют.

AlexLucas 20.03.2013 19:18

http://stackoverflow.com/questions/2...ionscript-does
http://help.adobe.com/en_US/ActionSc...8a9b90204-7f6e
Собственно то что написал Hauts.

taluks 22.03.2013 18:54

спасибо, будем ждать будущее)

i.o. 22.03.2013 19:53

Цитата:

Сообщение от strangedk (Сообщение 1126048)
Встречал в коде native и virtual, тоже не знаю откуда, не углублялся.
Вообще среда собирает это всё даже, и не ругается.

- Тоже интересно, откуда

native - значит, что метод нативный, т.е. его реализация осуществлена в самом FlashPlayer'e. Используется для компиляции кода playerglobal.swc, например.

virtual - ну это из С++, означает, что метод может быть переопределен (override). В АС3, на данный момент, может использоваться как пометка, что данный метод можно/нужно переопределять в наследуемых классах.

cleptoman 22.03.2013 20:40

virtual да, может быть переопределен как и protected, но, насколько я понял при модификаторе virtual при касте экземпляра к родительскому классу будет вызываться этот метод именно родительской реализации.
для "нужно переопределить" используется abstract.
но опять таки это не в АС3..тут они просто как указатели информационные для разработчиков что можно/нужно сделать с методом

caseyryan 22.03.2013 21:36

Цитата:

virtual да, может быть переопределен как и protected, но, насколько я понял при модификаторе virtual при касте экземпляра к родительскому классу будет
Нет, в нем нет ничего особенного, это самое обычное переопределение, с атрибутом virtual или без него, разницы нет. Допустим в джаве, все методы, которые не помечены как final по умолчанию virtual. Они сразу доступны для переопределения, поэтому слово virtual писать не обязательно. Так же как абсолютно все методы интерфейсов по умолчанию public abstract соответственно компилятор сам это предположит, и разработчику нет нужды это дописывать.
опять же, в джаве опеределения методов в интерфейсах типа:
Код AS3:

public abstract void setValue(int value);

и
Код AS3:

void setValue(int value);

Абсолютно идентичны. То же и с атрибутом virtual

Цитата:

Сообщение от taluks (Сообщение 1126035)
Какое значение несет атрибут virtual?
встретил в Бокс2Д
Код AS3:

public virtual function SayGoodbyeJoint(joint:b2Joint) : void{};


Совершенно никакого. Это просто соответствие версии С++.
Можно написать просто
Код AS3:

public function SayGoodbyeJoint(joint:b2Joint) : void{}

ничего от этого не изменится

Мне не понятно какое значение там несет точка с запятой после фигурных скобок )

maxkar 22.03.2013 21:40

Цитата:

virtual да, может быть переопределен как и protected, но, насколько я понял при модификаторе virtual при касте экземпляра к родительскому классу будет вызываться этот метод именно родительской реализации.
Там, где был virtual (delphi/pascal, может быть C++) было как раз наоборот. Гарантировалось, что вызовется метод ребенка даже если compile-time тип выражения был типом родителя. В java/as/c#/javascript все методы по-умолчанию виртуальные, поэтому модификатор не требуется и не используется.


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

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