Зачем именно интерфейсы в методах обратного вызова?

Почему в механизмах обратного вызова надо использовать именно Интерфейсы? Почему не сделать это через класс, скажем, так:

public class ButtonHandler {
    void execute () {
        System.out.println("Button is pressed!");
    }
}
public class Button {
    ButtonHandler handler;

    Button (ButtonHandler action) {
        this.handler = action;
    }

    public void click() {
        handler.execute();
    }

}
public class MAIN {
    public static void main(String[] args) {
        Button btn1 = new Button(new ButtonHandler());
        btn1.click();
    }
}

Ответы (0 шт):