Klasa abstrakcyjna i interfejs

Anonim

Klasa abstrakcyjna a interfejs

Klasa abstrakcyjna (lub typ) jest typem w nominalnym systemie zadeklarowanym przez program. Chociaż nazwa wskazuje na takie, klasa abstrakcyjna może zawierać lub nie zawierać abstrakcyjnych metod lub właściwości. Klasa rozróżnienia odnosi się do różnych konstrukcji językowych, które mogą być użyte do implementacji typów abstrakcyjnych. Klasy abstrakcyjne można scharakteryzować zagadnieniem projektowania, które zachowuje najlepsze programowanie obiektowe i ich niedokończoną naturę.

Interfejs jest typem abstrakcyjnym, który klasy muszą implementować w celu określenia interfejsu (ogólnie mówiąc). Interfejsy mogą zawierać tylko sygnatury metod i stałe deklaracje (zarówno statyczne, jak i końcowe), nigdy definicje metod. Interfejsy symulują wiele dziedziczeń i są używane do kodowania podobieństw współużytkowanych pomiędzy różnymi typami klas.

Abstrakcyjne typy można tworzyć, oznaczać lub symulować na kilka różnych sposobów. Programista może oznaczać typy abstrakcyjne, używając jawnie słowa kluczowego abstract, włączając jedną lub więcej metod do definicji klasy, dziedzicząc z innego typu abstrakcyjnego bez nadpisywania brakujących funkcji niezbędnych do wypełnienia definicji klasy lub wysyłając określoną metodę do obiektu zorientowanego na obiekt język programowania znany jako taki, który nie implementuje bezpośrednio metody.

Interfejsy można definiować za pomocą metod abstrakcyjnych. Klasy mogą być również implementowane w interfejsach. Jeśli klasa implementuje interfejs i nie implementuje wszystkich swoich metod, należy użyć abstrakcji znacznika, w przeciwnym razie znacznik nie jest konieczny (ponieważ wszystkie interfejsy są z natury abstrakcyjne). Klasy mogą również implementować wiele interfejsów.

Podczas gdy interfejsy służą do określania interfejsów ogólnych, typy abstrakcyjne mogą być używane do definiowania i wymuszania protokołu (który jest zbiorem operacji, które muszą obsługiwać wszystkie obiekty implementujące żądany protokół). Abstrakcyjne typy nie występują w językach bez podtytułów. Ponieważ takie podtypy są zmuszone do wdrożenia wszystkich niezbędnych funkcji, zapewniając poprawność wykonania programu. Istnieje kilka sposobów tworzenia typów abstrakcyjnych: pełne abstrakcyjne klasy bazowe to klasy, które są jawnie deklarowane jako abstrakcyjne lub zawierają abstrakcyjne (niezimplementowane) metody; Typowe systemy obiektów Lisp obejmują mixiny oparte na systemie Flavours; Java, oczywiście; i Cechy, które działają jako rozszerzenie Smalltalk.

Streszczenie: 1. Klasy abstrakcyjne (lub typy) deklarują programy; interfejsy są typami abstrakcyjnymi, które wszystkie klasy muszą implementować, aby określić ich interfejs. 2. Typy abstrakcyjne można oznaczać za pomocą słowa kluczowego jawnie; interfejsy są z natury abstrakcyjne, dlatego nie muszą być oznaczane za pomocą słowa kluczowego w ogóle (chyba że dana klasa implementuje interfejs, ale nie implementuje wszystkich swoich metod).