Я так удивлен, что этот код компилируется, но что это значит?AS3: интерфейс реализует другой интерфейс
public interface IBar {}
public interface IFoo implements IBar {}
Я так удивлен, что этот код компилируется, но что это значит?AS3: интерфейс реализует другой интерфейс
public interface IBar {}
public interface IFoo implements IBar {}
Это не может быть скомпилирован, так как интерфейс не может implement
другой интерфейс, но может extends
его:
public interface IFoo extends IBar {}
Ваш код должен приводит к ошибке:
1084: Syntax error: expecting leftbrace before implements.
Он компилируется в моей среде IDE: FlashBuilder 4.6 на Mac OS X. –
Должно быть объяснение, почему вы думаете, что оно компилируется, может быть, этот код существует в вашем проекте, но на самом деле не скомпилирован, поскольку он не используется. [здесь] (https://dl.dropbox.com/u/77217007/stackoverflow/15133273-as3-an-interface-implements-another-interface/astest.as) является примером, который проверяет его на SDK. Снимок экрана для SDK 4.6 http://pix.am/RK0b.png этого примера. В любом случае в такой языковой структуре есть единственный смысл - расширение интерфейсов. – fsbmain
Он также компилируется на FlashDevelop 4.2.1 в Windows. SDK: Flex 4.6.0. Код, который я показал, фактически является кодом, который мы используем в процессе производства. –
Возможно, это зависит на компиляторе, но поскольку интерфейс не может буквально реализовать что-либо, «умный» компилятор может интерпретировать «реализует» как «расширяет» и действует соответствующим образом. Не возражаете ли вы предоставить информацию о том, какой компилятор вы используете, который компилирует это? – Vesper
FlashBuilder 4.6 на Mac OS X. –
Я повторно пометил ваш вопрос как для FlashBuilder. Убедитесь, что в следующий раз вы помечаете свой вопрос точно. –