Różnica między klasą abstrakcyjną a interfejsem

Różnica między klasą abstrakcyjną a interfejsem

Streszczenie Klasa VS. Interfejs

Klasa abstrakcyjna (lub typ) jest rodzajem systemu typu nominatywnego zadeklarowanego przez program. Chociaż nazwa oznacza taką, klasa abstrakcyjna może, ale nie musi zawierać abstrakcyjnych metod lub właściwości. Klasa rozróżniania odnosi się do różnych konstrukcji językowych, które mogą być używane do wdrażania typów abstrakcyjnych. Zajęcia abstrakcyjne mogą charakteryzować się problemem projektowym, który utrzymuje najlepsze programowanie zorientowane na obiekt i ich niedokończoną natury.

Interfejs to abstrakcyjny typ, który klasy muszą zaimplementować, aby określić interfejs (ogólnie rzecz biorąc). Interfejsy mogą zawierać tylko sygnatury metody i stałe deklaracje (zarówno statyczne, jak i końcowe), nigdy nie definicje metody. Interfejsy symulują wiele dziedziczeń i są używane do kodowania podobieństw wspólnych między różnymi typami klas.

Typy abstrakcyjne mogą być tworzone, oznaczone lub symulowane na kilka różnych sposobów. Programista może oznaczać typów abstrakcyjnych za pomocą abstrakcji słów kluczowych, poprzez włączenie jednej lub więcej metod w definicji klasy, dziedziczenie po innym typu abstrakcyjnym bez nadrzędnych brakujących funkcji niezbędnych do wypełnienia definicji klasy lub poprzez wysłanie konkretnej metody do obiektu zorientowanego Język programowania znany jako ten, który nie wdraża bezpośrednio metody.

Interfejsy można zdefiniować za pomocą metod abstrakcyjnych. Zajęcia mogą być również zaimplementowane w interfejsach. Jeśli klasa implementuje interfejs i nie wdraża wszystkich swoich metod, należy zastosować abstrakcję znaczącego, w przeciwnym razie znacznik nie jest konieczny (ponieważ wszystkie interfejsy są z natury abstrakcyjne). Zajęcia mogą również wdrażać wiele interfejsów.

Podczas gdy interfejsy są używane do określenia ogólnych interfejsów, typy abstrakcyjne mogą być używane do definiowania i egzekwowania protokołu (który jest zestawem operacji, które muszą obsługiwać wszystkie obiekty, które implementują żądany protokół). Typy abstrakcyjne nie występują w językach bez podtypowania. Jako takie podtypy są zmuszone do wdrożenia wszystkich potrzebnych funkcjonalności, zapewniając poprawność wykonania programu. Istnieje kilka sposobów tworzenia typów abstrakcyjnych: pełne abstrakcyjne klasy podstawowe są klasami, które są albo wyraźnie deklarowane jako abstrakcyjne lub zawierają metody abstrakcyjne (niezapłacone); Wspólne systemy obiektów LISP obejmują miksiny oparte na systemie smaków; Java, oczywiście; i cechy, które działają jak przedłużenie do Smalltalk.

Streszczenie:
1. Klasy abstrakcyjne (lub typy) deklarują programy; Interfejsy są typami abstrakcyjnymi, które wszystkie klasy muszą wdrożyć, aby określić swój interfejs.
2. Typy abstrakcyjne można oznaczać jawnie za pomocą słowa kluczowego; Interfejsy są z natury abstrakcyjne, dlatego w ogóle nie muszą być oznaczone za pomocą słowa kluczowego (chyba że konkretna klasa implementuje interfejs, ale nie wdraża wszystkich jego metod).