Тема: ООП
Показать сообщение отдельно
Старый 06.08.2004, 07:53
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 29  
Crazy
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Не "является по умолчанию", а "в Java модификатор abstract может быть применен в описании интерфейса, однако не оказывает никакого влияния на результат".

Желающим предоставляется уникальная возможность: определить по приведенным ниже дампам байткода, который интерфейс является абстрактным, а какой "конкретным":

Код:
00000000:  CA FE BA BE 00 00 00 2E | 00 09 07 00 07 07 00 08
00000010:  01 00 03 66 6F 6F 01 00 | 03 28 29 56 01 00 0A 53
00000020:  6F 75 72 63 65 46 69 6C | 65 01 00 0B 41 62 73 49
00000030:  6E 74 2E 6A 61 76 61 01 | 00 06 41 62 73 49 6E 74
00000040:  01 00 10 6A 61 76 61 2F | 6C 61 6E 67 2F 4F 62 6A
00000050:  65 63 74 06 01 00 01 00 | 02 00 00 00 00 00 01 04
00000060:  01 00 03 00 04 00 00 00 | 01 00 05 00 00 00 02 00
00000070:  06                      |
Второй:

Код:
00000000:  CA FE BA BE 00 00 00 2E | 00 09 07 00 07 07 00 08
00000010:  01 00 03 66 6F 6F 01 00 | 03 28 29 56 01 00 0A 53
00000020:  6F 75 72 63 65 46 69 6C | 65 01 00 0B 41 62 73 49
00000030:  6E 74 2E 6A 61 76 61 01 | 00 06 41 62 73 49 6E 74
00000040:  01 00 10 6A 61 76 61 2F | 6C 61 6E 67 2F 4F 62 6A
00000050:  65 63 74 06 01 00 01 00 | 02 00 00 00 00 00 01 04
00000060:  01 00 03 00 04 00 00 00 | 01 00 05 00 00 00 02 00
00000070:  06                      |
Исходник:

Код:
public abstract interface AbsInt {
  void foo();
}
...в одном случае и без "abstract" -- в другом.

Вообще, в Java модификатор abstract для сущностей уровня классов означает, что данный класс нельзя инстанциировать и то, что в нем могуо быть методы, не имеющие реализации. Инстанциировать интерфейсы нельзя никогда, а реализации в них в принципе не бывает.

Посему "абстрактный интерфейс" есть "масло масляное".
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++


Последний раз редактировалось Crazy; 06.08.2004 в 07:58.