Почему в механизмах обратного вызова надо использовать именно Интерфейсы? Почему не сделать это через класс, скажем, так: 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(); } }