В Java интерфейс может иметь только методы, константы и статические методы. Он не может иметь в качестве членов класс или другой интерфейс. Методы интерфейса определяют сигнатуры методов, которые должны быть реализованы классами, которые реализуют этот интерфейс. Константы интерфейса представляют общие константы, значения которых могут использоваться в коде, который использует этот интерфейс. Статические методы интерфейса предоставляют утилитарные методы, которые связаны с интерфейсами, но не являются частью их основной функциональности. Например, следующий код не будет работать, поскольку мы пытаемся объявить класс MyClass внутри интерфейса: public interface MyInterface {
class MyClass { // Ошибка компиляции: "interface expected here" // ... }
} Здесь мы пытаемся объявить класс MyClass как член интерфейса MyInterface, что приводит к ошибке компиляции, так как класс не может быть объявлен внутри интерфейса. Таким образом, в Java интерфейсы могут иметь только методы,