Можно ли создать конструктор интерфейса

«Можно ли создать конструктор интерфейса» — вопрос из категории ООП, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет, в Java/Kotlin интерфейсы не могут иметь конструкторов. Интерфейс - это абстрактная сущность, определяющая контракт (методы), который должны реализовать классы. Конструктор - это часть реализации, а интерфейс не содержит реализации.

Однако, в Kotlin есть companion object, который можно использовать в интерфейсах для фабричных методов:

interface MyInterface {
    companion object {
        fun create(): MyInterface = object : MyInterface {
            // реализация
        }
    }
}
// Использование:
val instance = MyInterface.create()

В Java можно использовать статические фабричные методы в интерфейсах (начиная с Java 8):

interface MyInterface {
    static MyInterface create() {
        return new MyInterface() {
            // реализация
        };
    }
}