Zanim powstały metody domyślne w interfejsach wszystkie klasy które implementowały dany interfejs musiały implementować metody danego interfejsu. Jeśli więc w kodzie naszego programu mieliśmy interfejs zaimplementowany np. przez 10 klas, dodanie metody do tego interfejsu powodowało, że wszystkie 10 klas musiało zostać zmienionych. Było to bardzo problematyczne w przypadku kiedy część klas implementujących dany interfejs nie potrzebowała nowej metody. W takich przypadkach tworzona więc była w nich pusta metoda, która nie robiła nic.
Było to również problematyczne dla samych twórców Javy, gdyż ograniczało zmiany w interfejsach działających od początku w Javie. Z tego powodu twórcy Javy wprowadzili możliwość dodawania do interfejsów metod domyślnych czyli takich które mogą zawierać ciało metody. Metody te używają słowa kluczowego default. Ponieważ są już zaimplementowane (nie są abstrakcyjne), nie jest wymagane implementowania ich ponownie w klasach dziedziczących. W razie potrzeby mogą być one nadpisywane w tych klasach. przykład metody domyślnej:
public interface Item { public void setName(String name); public String getName(); public String getDescription(); default String getFullName() { return “I am a default method”; } }