Экземпляр класса является никогда интерфейсом. Метод может возвращать тип интерфейса, но «вещь», которую вы получаете через метод, всегда является объектом, реализующим этот интерфейс.
Несколько простых примеров, иллюстрирующих это:
public static main(String[] args) {
List list = createList();
}
public static List createList() {
return new ArrayList();
}
Метод createList
возвращает тип интерфейса (List
) , но возвращает экземпляр реального класса (ArrayList
). Таким образом, в конце локальная переменная list
содержит ссылку на этот экземпляр ArrayList
.
Вернемся к вашему примеру: если у вас есть интерфейс
public interface ITextArea { /* methods */ }
и хотите создать объект «который реализует этот интерфейс», тогда вам нужен другой класс, такой как
public class TextArea implements ITextArea { /* methods */ }
и вы захотите создать экземпляры этого конкретного класса.