Вводный курс. Язык программирования Java
- Вводный курс. Язык программирования Java
- Просмотров: 2176
27, Интерфейсы
Интерфейс это класс, в котором все методы абстрактные, а все поля являются статическими константами.
Другие определения интерфейса
Интерфейсы - это те же самые абстрактные классы, не содержащие объявлений полей данных и обычных методов.
Основное отличие интерфейса от абстрактного класса заключается в том, что производный класс может наследовать одновременно несколько интерфейсов.
Интерфейс описывает задачи, который должен решить класс, но не определяет способа их реализации.
Интерфейс — это эскиз. В нем указано, что делать, но не указано, как это делать.
Объявление интерфейсов
Объявление интерфейсов похоже на объявление классов. Вот особенности. Объявление начинается с заголовка. Сначала указываются модификаторы: public или abstract (остальные не имеют смысла), далее ключевое слово interface и имя интерфейса.
Интерфейс может быть объявлен как public, и тогда он будет доступен для общего использования, либо модификатор доступа может не указываться, в этом случае интерфейс доступен только для типов своего пакета. Модификатор abstract для интерфейса не требуется, поскольку все интерфейсы являются абстрактными классами.
Вот формат
public interface <имя интерфейса>
{
тело интерфейса (код интерфейса) состоит:
поля-константы
абстрактные методы
}
Тело интерфейса состоит из объявления полей-констант и абстрактных методов. Все поля интерфейса по умолчанию являются public final static, так что эти модификаторы указывать необязательно и даже нежелательно, чтобы не загромождать код.
Особенности:
- Поскольку поля являются финальными, необходимо их сразу инициализировать.
- Все методы интерфейса являются public abstract и эти модификаторы также необязательны.
Пример.
public interface Move
{
int x=1;
int y=1;
void moveX();
void moveY();
}
Основные свойства интерфейса:
- Интерфейс (interface), в отличие от класса, может содержать только статические константы и заголовки методов, без их реализации.
- В наследуемом классе обязательно требуется переопределить все методы интерфейса
- При наследовании интерфейса вместо ключевого слова extends используется ключевое слово implements.
- Интерфейсы поддерживают множественное наследование, поэтому после слова implements можно перечислить через запятую произвольное количество интерфейсов.
Пример.
public interface Voice {/p>
void voice();
}
public class Dog implements Voice{
void voice()
System.out.println("Gav-gav!");
}
}
public class Cat implements Voice{
public void voice(){
System.out.println("Miaou!");
}
}
public class Cow implements Voice{
public void voice(){
System.out.println("Mu-u-u!");
}
}
public class InterVoice {
public static void main(String[] args) {
Voice [] singer = new Voice[3];
singer[0] = new Dog();
singer[1] = new Cat();
singer[2] = new Cow();
for(int i = 0; i < singer.length; i++)
singer[i].voice();
}
}