2

Правильно ли следует понимать, что единственная причина, почему возможно имплементировать достаточно большое (65535) количество Interface в Java это то, что Interface не имея по определению реализации, не обладает памятью для хранения данных?

TimurVI
  • 8,480
  • 4
    Начиная с Java 8, интерфейс может иметь реализацию по умолчанию. –  Jan 01 '17 at 12:53
  • 1
    Ну, не единственная, конечно. Ещё важен смысл. – VladD Jan 01 '17 at 12:58
  • @VladD ну конечно :), куда в программировании без смысла... – TimurVI Jan 01 '17 at 13:06
  • А какие могут причины, чтобы это не было возможно? – Regent Jan 01 '17 at 13:07
  • Интересна была связь с выделением памяти на хранение – TimurVI Jan 01 '17 at 13:08
  • Если бы с наследованием от классов поступили так же, как и с default-методами интерфейсов в Java 8, то и от нескольких классов можно бы было наследоваться. – Regent Jan 01 '17 at 13:11
  • Ограничение на кол-во интерфейсов таки есть: http://ru.stackoverflow.com/questions/566012/%D0%9C%D0%B0%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5-%D0%BA%D0%BE%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%BE-%D0%B8%D0%BC%D0%BF%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%BE%D0%B2-%D0%B2-%D0%BE%D0%B4%D0%BD%D0%BE%D0%BC-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B5/566018#566018 – ЮрийСПб Jan 01 '17 at 14:33
  • @ЮрийСПб спасибо, подправлю – TimurVI Jan 01 '17 at 14:52

1 Answers1

3

Изначально интерфейсы это способ создать "множественное" наследование без множественного наследования. Интерфейс - это контракт, он гарантирует, что у определенного объекта есть методы с сигнатурами описанными в интерфейсе. Поскольку в java использовано понятие вызов метода, а не посылка сообщения (как в это было предложено в первой модели ООП), то компилятору нужен этот контракт для проверки кода.