Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Выдается ошибка, если protected доступ к функции, при реализации интерфейса (http://www.flasher.ru/forum/showthread.php?t=197552)

Black Soviet 09.04.2013 19:40

Wolsh
Да, вы правы, никак.

Поясните только почему
Код AS3:

IPausable(cur).pause();

,а не
Код AS3:

cur.pause();


Alexmody 09.04.2013 19:58

Цитата:

Сообщение от caseyryan (Сообщение 1128994)
as3 не С++, и не нужно сравнивать. Да в С++ есть множественное наследование, и это не есть гуд. Конечно пути обхода придумываются, но тем не менее коллизии возникают. А что если разные классы имеют разную имплементацию одного и того же метода? Какую выбрать?

Раздел The diamond problem:
http://en.wikipedia.org/wiki/Multiple_inheritance

Цитата:

Сообщение от Wolsh (Сообщение 1129000)
Да? И как Вы докажете компилятору, что у этих эеземпляров действительно есть метод pause?

Ну вроде бы кастомизацией типа, т.е. указывается тип данных, а в скобочках объект кастомизации:
IPausable(cur).pause();

iflamberg 09.04.2013 20:05

Цитата:

Сообщение от Black Soviet (Сообщение 1129002)
Wolsh
Да, вы правы, никак.

Поясните только почему
Код AS3:

IPausable(cur).pause();

,а не
Код AS3:

cur.pause();


Потому что cur у меня Sprite, у котого нет функции pause(). Я привожу его к типу IPausable, у котого такая функция есть. А перед этим проверяю, дейсвительно он относится к этому типу. Потому что на сцене могут быть и просто Sprite, которые не анимированы и которых останавливать на паузу смысла нет.

Да, можно обойтись без интерфейса.
Код AS3:

var l:int = scene.numChildren;
while (l--){
  var cur:* = scene.getChildAt(l);
  if (cur.pause) cur.pause();
}

Можно много без чего обойтись. Без private и protected членов класса. Или без сеттеров-геттеров. Все эти финтифлюшки по большому счету для удобства работы в команде и читабельности кода.

caseyryan 09.04.2013 20:33

Цитата:

Раздел The diamond problem:
http://en.wikipedia.org/wiki/Multiple_inheritance
Я знаю это ) И как обходят знаю. И тем не менее это кривой подход. Не смотря на всю крутость и развитость С++, есть в нем и серьезные недостатки. Множественное наследование я считаю недостатком. Ну, это лично мое мнение.
Цитата:

Все эти финтифлюшки по большому счету для удобства работы в команде и читабельности кода.
Я бы так не сказал. Работа в команде тут вообще ни при чем. Даже если один работает, все равно все это нужно для правильной организации проекта.

etc 11.04.2013 00:42

Цитата:

Сообщение от iflamberg (Сообщение 1129009)
Все эти финтифлюшки по большому счету для удобства работы в команде и читабельности кода.

И только? Неожиданно.

Babylon 11.04.2013 01:19

Я то же считаю множественное наследование недостатком, но и с недостатками жить можно :)

Добавлено через 3 минуты
Проектирование и программирование это разные специализации. Иногда на первое попросту время нет. Да и не все заказчики понимают необходимость проектирования и согласования. Поэтому работает принцип - любой "г/к" за ваши деньги.


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

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