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();
    }
}

Добавить комментарий
  • Комментарии не найдены