Переменная типа объекта может рассматриваться как содержащая «идентификатор объекта».Единственное, что можно сделать непосредственно с помощью идентификатора объекта, - это присвоить его другому идентификатору объекта или сравнить его с другим идентификатором объекта.Говоря someObject.foo, фактически говорится: «возьмите объект, на который ссылается идентификатор объекта в переменной« someObject », и используйте для него метод« foo ».
Интерфейс может рассматриваться как дополнительная панель подключения, котораяприсоединяется к объекту с набором стандартизированного набора соединений. Если объявлена переменная типа интерфейса, она будет содержать идентификатор объекта, имеющего такую панель, и, говоря «someInterface.foo», говорит:используйте метод "foo" панели (который, в свою очередь, будет подключен - и активирован - к какому-либо методу внутри самого объекта).
Обратите внимание, что для того, чтобы интерфейс мог быть использован, его внешние соединения имеютбыть подключенным к чему-то изнутри. Создание экземпляра только интерфейса означало бы создание панели, к которой ничего не подключено. Не было бы никакого способа, чтобы какие-либо методы, выполняемые на интерфейсе, имели какой-либо эффект, поскольку не было бы никакого проводного интерфейса.в реализации для любого из них.