Интерфейсы представляют полностью абстрактные классы: ни один из объявленных методов не может быть реализован внутри интерфейса. Все объявленные методы автоматически трактуются как public и abstract, а все атрибуты – как public, static и final. Класс может реализовывать любое число интерфейсов, указываемых после ключевого слова implements, дополняющего определение класса. На множестве интерфейсов также определена иерархия по наследованию, но она не имеет отношения к иерархии классов. В языке Java интерфейсы обеспечивают большую часть той функциональности, которая в C++ представляется с помощью механизма множественного наследования. Класс может наследовать один суперкласс и реализовывать произвольное число интерфейсов.
[public] interface имя[extends I1,I2,…,IN]
{/*реализация интерфейса*/}
Реализация интерфейсов классом может иметь вид:
[доступ] class имя_класса implements I1,I2,…,IN
{/*код класса*/}
Здесь I1,I2, …,IN перечень используемых интерфейсов. Класс, который реализует интерфейс, должен предоставить полную реализацию всех методов, объявленных в интерфейсе. Кроме этого, данный класс может объявлять свои собственные методы. Если класс расширяет интерфейс, но полностью не реализует его методы, то этот класс должен быть объявлен как abstract.