Przechodzę przez samouczek iOS ze strony programisty Apple .
Wydaje mi się, że protocol
i interface
mają prawie taką samą funkcjonalność.
Czy są między nimi jakieś różnice?
różne zastosowania w projekcie?
Zaktualizowano
Tak , przeczytałem powyższy link i nadal nie jestem pewien, jakie są różnice i zastosowanie między protocol
i interface
. Kiedy zadaję takie pytanie, chciałbym zobaczyć proste wyjaśnienie na ten temat. Czasami może być trudno uzyskać wszystko z dokumentacji.
Odpowiedzi:
Zasadniczo protokoły są bardzo podobne do interfejsów Java, z wyjątkiem:
.
Są to od razu widoczne różnice dla programisty Java (a przynajmniej to, co do tej pory zauważyłem).
źródło
default
słowem kluczowym . Zobacz samouczek Oracle .Uzupełnienie odpowiedzi @Thomas Schar. Magia protokołu Swift pochodzi z rozszerzenia.
2). Interfejs Java 8 może mieć domyślne implementacje, ale nie można tego zrobić „wstecz”.
jego implementacje, jeśli jest to potrzebne) do dowolnej klasy lub struktury.
w niektórych przypadkach „ślepoty nawiasów ostrych”.
Jedną rzeczą, która sprawiła, że drapałem się po głowie przez kilka godzin, jest to, że nie wszystkie protokoły mogą być używane jako typy właściwości. Na przykład, jeśli masz protokół z typem aliasu, nie możesz bezpośrednio użyć go jako typu właściwości (ma to sens, gdy się nad tym zastanowisz, ale w Javie naprawdę chcemy mieć właściwość taką jak userrava: IDao).
źródło
required
przed funkcją w protokole, po prostu dostajesz'required' may only be used on 'init' declarations
...