Ответ
Нет, интерфейсы в Java не могут содержать конструкторы.
Почему?
- Назначение интерфейса — определение контракта (сигнатур методов), а не реализация или инициализация состояния объекта.
- Конструктор используется для инициализации полей конкретного объекта, что противоречит абстрактной природе интерфейса.
Пример ошибки:
interface MyInterface {
// Ошибка компиляции: Interface abstract methods cannot have body
// MyInterface() {}
}
Альтернатива (с Java 8): Для создания объектов, соответствующих интерфейсу, можно использовать статические фабричные методы внутри самого интерфейса:
interface MyInterface {
static MyInterface createDefaultInstance() {
return new MyInterface() {
// реализация анонимного класса
};
}
}
// Использование:
MyInterface instance = MyInterface.createDefaultInstance();