INF.04 · pytanie 3
Jakie jest poprawne określenie interfejsu (szablonu klasy) w języku Java? interface IMyInterface { private: int a; IMyInterface() { a = 0; } void mth1(); } Definicja 1 | interface IMyInterface { private: int a; void mth1(); int mth2() { return a; } } Definicja 2 interface IMyInterface { void mth1(); int mth2() { return 0; } } Definicja 3 | interface IMyInterface { void mth1(); int mth2(); } Definicja 4
- ADefinicja 3
- BDefinicja 1
- CDefinicja 4Poprawna
- DDefinicja 2
Wyjaśnienie
W języku Java interfejs określa zbiór abstrakcyjnych metod, które klasa implementująca musi zaimplementować. Poprawna definicja interfejsu nie zawiera zmiennych instancji ani konstruktorów, co jest błędem w pierwszej definicji. Interfejsy służą do deklarowania metod, które są automatycznie publiczne i abstrakcyjne. W czwartej definicji, interfejs IMyInterface zawiera dwie metody mth1 i mth2 bez implementacji, co jest zgodne z zasadami Javy. Metody w interfejsie nie mają ciał, co wskazuje, że są przeznaczone do implementacji w klasie, która zadeklaruje się jako implementująca ten interfejs. Interfejsy są kluczowe dla polimorfizmu w Javie, pozwalając na tworzenie kodu, który może pracować z obiektami różnych klas w jednolity sposób, o ile klasy te implementują wspólny interfejs. Zastosowanie interfejsów zwiększa spójność i elastyczność kodu, umożliwiając łatwe dodawanie nowych funkcjonalności bez ingerencji w istniejącą strukturę kodu. Interfejsy są także wykorzystywane do tworzenia klasycznych wzorców projektowych jak Adapter, Strategia czy Obserwator, co jest dobrą praktyką w programowaniu obiektowym.