Интерфейсы - это шаблоны классов. Хотя это и не обязательно, они являются частью организационной структуры объектно-ориентированного программирования. Интерфейсы определяют методы для классов, указывая имя метода, тип возвращаемого значения (или void) и аргументы метода (по типу и имени). Эти определения методов называются сигнатурами. Поскольку это шаблон, сигнатуры методов не содержат кода. Код вводится в реализацию интерфейса. Интерфейсы используются в дисциплине полиморфизм.
Обратите внимание на эти два важных момента об интерфейсах:
interface
, все методы интерфейса должны появиться в классе.implements
Используется ключевое слово при создании класса , который смоделированный интерфейс.Представьте себе, как вырезать приманку для утки из бревна. Сначала используется шаблон для нанесения рисунка на древесину. Затем, когда древесина распиливается, она становится похожей на шаблон. Однако на данный момент ни шаблон, ни дерево не имеют каких-либо мелких деталей, которые можно было бы ожидать от готовой приманки. Шаблон использовался для определения основных характеристик, а не точных деталей. После того, как было вырезано несколько частей в форме утки, каждая из них может быть вырезана и украшена уникальным образом. Тем не менее, все они имеют одинаковый размер и форму.
Интерфейс обычно используется как шаблон для нескольких классов. Все эти классы используют методы, определенные в интерфейсе. Однако реализация методов может варьироваться от одного класса к другому.
Интерфейс с именем Animal может иметь определения методов для feed, groom и pet. Кормление, уход и ласки животных могут быть такими же разными, как и сами животные.
interface Animal {
boolean feed(boolean timeToEat);
void groom();
void pet();
}
Например, класс собак может быть реализован в некоторой степени предсказуемым образом.
class Dog implements Animal {
boolean feed(boolean timeToEat) {
// pour food into bowl
return true;
}
void groom() {
// brush well
}
void pet() {
// pet cautiously
}
}
Другие классы животных могут иметь особые потребности.
class Giraffe implements Animal {
boolean feed(boolean timeToEat) {
// point to the trees
return true;
}
void groom() {
// get a ladder
// brush well
}
void pet() {
// get a ladder
// pet cautiously
}
}
class Tiger implements Animal {
boolean feed(boolean timeToEat) {
// toss raw meat into cage
return true
}
void groom() {
// tranquilize
// brush well
}
void pet() {
// DO NOT PET
}
}
Создайте класс гориллы, реализующий интерфейс Animal.