Интерфейс это фактически регламент взаимодействия.
Класс который реализует интерфейс обязан реализовывать все его методы.
В интерфейсе вы описываете лишь сигнатуры методов, то есть вы указываете что класс наследник должен уметь делать, но как он будет это делать, тот решает сам.
Таким образом вы уверенны, что если класс реализует тот или иной интерфейс, все объекты данного класса имеют определенный набор методов.
ООП - мир абстракций :) Впустите его в себя :) Интерфейсы это еше одна абстракция позволяющая отделить описание от реалзиации.
"Придумать класс с правильным именем" - так вы не сможете заставить "наследников" реализовывать функционал.
Интерфейсы располагаются на уровень выше классов, если можно так выразиться. Они неявно "объединяют" классы схожие по каким то общим признаком, и которые
обязаны (по логике вашего приложения) реализовывать те или иные методы.
interface Instruments {
final static String key = "До мажор";
public void play();
}
class Drum implements Instruments {
public void play() {
System.out.println("бум бац бац бум бац бац");
}
}
class Guitar implements Instruments {
public void play() {
System.out.println("до ми соль до ре до");
}
}
p.s: программисты дополнят и поправят.