Interjesy są bardzo wygodnym sposobem na rozszerzanie naszej klasy bazowej o nowe funkcjonalności. W Kotlin'ie różnią się one nieco od tych Jav'owych.
Na początku krótko omówię cechy charakterystyczne dla interfejsów w Kotlin'ie.
Stworzyłem prosty interfejs pojazdu. Jak widać posiada on 3 metody, które klasa dziedzicząca będzie musiała nadpisać.
Co to znaczy, że będzie musiała? Interfejs jest kontraktem, czyli zestawem funkcjonalności wymaganych koniecznie bez względu na inne funkcje czy pola.
Na przykładzie widać, iż spokojnie możemy napisać prostą implementację w interfejsie dla getName().
Samochód jest pojazdem, dla tego dobrze, żeby posiadał przynajmniej podstawowe cechy pojazdu.
Dla tego musi on zaimplementować metody drive(), stop() i getName(). Nie przeszkadza to jednak w tym, żeby wykonał drift :)
Bardzo dobrą definicję interfejsu funkcyjnego w javie daje strona java-start
Interfejs funkcyjny jest interfejsem, który posiada tylko jedną metodę abstrakcyjną. Pozwala on w Javie (od wersji 8) na wykorzystanie wyrażeń lambda w miejsce, gdzie normalnie kompilator oczekuje takiego typu danych. Interfejsy funkcyjne opcjonalnie oznaczane są adnotacją @FunctionalInterface.
W tym języku można powyższy kod jeszcze uprościć za pomocą SAM
Cały interfejs został przeniesiony jako zmienna do konstruktora.
Dziękuję Ci za przeczytanie tego materiału. Mam nadzieję, że udało mi się nieco przybliżyć Tobie temat interfejsów :)
Zachęcam cię do odwiedzenia mojej strony na Google Play store i sprawdzenia wszystkich moich aplikacji.