@Wibowit
Tak trochę offtopic ale
Ciekawe czy ktoś się nad tym zastanawiał co napisałem:
Innym zastosowaniem interfejsów jest: http://en.wikipedia.org/wiki/Interface_segregation_principle Dobieranie się do szczegółów implementacyjnych powoduje silne sprzężenie, które hamuje rozwój systemu, bo tych szczegółów implementacyjnych już nie można zmienić.
To jest oczywiste dla mnie. Często zawężam interfejsy do jednej metody, a więcej uzywam tylko wtedy, kiedy jest to koniecznie niezbędne.
Kiedyś miałem interfejs MouseListener z metodami "onMouseMove, onMouseClick" ale przecież nie mogę założyć, że ktoś, kto chce zaimplementować nasłuchiwanie myszy będzie się chciał nasłuchiwać onMouseMove i onMouseClick razem. Wtedy ten interfejs rozbiłem na mouseClickListener i mouseMoveListener
Właśnie dlatego uważam, że Javie przydałyby się funkcje jako obiekty, wtedy klasa, która korzysta z obiektu implementującego mogłaby sprawdzić czy implementuje daną metodę. Możnaby pewnie użyć do tego reflections ale to jest mało wydajne rozwiązanie.