Прежде всего, существует разница между парадигмой ООП и реализацией ООП в Java , поэтому одни и те же слова могут означать немного разные вещи.
В ООП интерфейсом парадигмы является то, что вы можете сделать с объектом (или что объект может сделать для вас ).Любой объект может иметь несколько интерфейсов и, следовательно, играть разные роли.Например, кто-то может работать программистом и иметь возможность создавать программы, но в то же время он может быть мужем и отцом и, таким образом, иметь возможность оплачивать счета за свою семью и заботиться о детях.Здесь «программист», «муж» и «отец» - это интерфейсы, а человек - это объект, который их реализует.Обратите внимание, что интерфейсы не подразумевают наличие каких-либо определенных функций (полей) для реализации объекта, а только действия, которые этот объект должен быть в состоянии выполнить.
Java более или менее следует этой идее, но, как и любая реализация парадигмы, имеет свои особенности.Java позволяет описывать методы, то есть действия, которые должен выполнять объект реализации, но не какие-либо подробности реализации, таким образом, ничего о полях объекта или частных методах.
Но как насчет констант (public final static
полей)?Являются ли они частью реализации или интерфейса.Это может быть как.Например, интерфейс «программист» может иметь постоянную WORK_HOURS
, установленную на «8».Таким образом, Java позволяет вам также описывать константы в интерфейсах.
Обратите внимание, что Java только помогает вам создавать хороший ООП-проект, но в этом сильно не нуждается.В частности, не все публичные методы объекта должны также существовать в интерфейсе.Например, методы getter и setter обычно являются открытыми, но на самом деле они являются частью реализации , а не интерфейсом, и поэтому их не стоит вводить в интерфейс.
(Обратите также внимание, что большинство вещей, которые я здесь описал, относится к ООП основного направления, как в Java, но есть и другие виды ООП, например, основанные на прототипах, в частности реализованные в JavaScript).