Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Реализация двух интерфейсов с одинаковым названием метода (http://www.flasher.ru/forum/showthread.php?t=163820)

Gogan 11.08.2011 17:57

Реализация двух интерфейсов с одинаковым названием метода
 
Есть один интерфейс:
Код AS3:

package testttttt
{
public interface IA
{
 
    function a():int;
    function b():void;
}
}

Второй интерфейс:
Код AS3:

package testttttt
{
public interface IB
{
    function a():void;
    function c():void;
}
}

Я хочу их обоих реализовать в каком то классе.
Код AS3:

package testttttt
{
  public class ClassAB implements IA, IB
  {
        ...
  }
}
{

Как можно это сделать и можно ли вообще?

toFL 11.08.2011 18:09

Думаю, что нельзя. Это своего рода перегрузка, как в Java. В ActionScript, я такого не встречал.

arkadattx 11.08.2011 18:11

переименовать один из методов а в ё

alatar 11.08.2011 18:12

Код AS3:

public interface IA
{
    function a():int;
}
...
public interface IB extends IA
{
    function b():void;
}
...
public interface IC extends IA
{
    function c():int;
}
...
public class ClassAB implements IB, IC
{
        ...
}


arkadattx 11.08.2011 18:45

alatar, в его примере они возвращают разные значения, поэтому такой вариант не подойдет

alatar 11.08.2011 18:52

Не заметил. Тогда только переименовать. Как уже было сказано, перегрузки в AS3 нет.

goodguy 11.08.2011 18:54

Какой-то быдлокод получается ) .
Если 2 интерфейса сожержат одинаковые методы, то проблем и так не будет, но в этом случае проблему действительно вызовут разные типы возвращаемых значений.
Цитата из Колина Мука
Цитата:

If a class implements
two interfaces that define a method by the same name, but with different signatures
(i.e., method’s name, parameter list, and return type), the compiler generates an
error indicating that one of the methods was not implemented properly.
If, on the other hand, a class implements two interfaces that define a method by the
same name and with the exact same signature, no error occurs. The real question is
whether the class can provide the services required by both interfaces within a single
method definition. In most cases, the answer is no.

kackbip 11.08.2011 18:56

Может возможно сделать базовый интерфейс с методом а(), от которого будут наследоваться IA и IB? Автор, как там по смыслу?
---
Стормозил. Про разные типы вывалилось из головы.

Gogan 11.08.2011 19:17

В общем понятно. Спасибо.
У меня не стояло никогда такой проблемы. Просто возникла такая идея : "а что если ? ...". Ну теоретически то это возможно, когда например юзаешь два движка ... :).

arkadattx 11.08.2011 20:34

package-ы в 99% случаев будут отличаться - тогда просто пишется путь к нужному классу с указанием package-а


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

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