Różnice między streszczeniem C # a interfejsem
Zarówno klasa abstrakcyjna, jak i interfejs są bardzo ważnymi metodologiami do nauczenia się w celu zrozumienia dowolnego szkolenia programowania obiektowego. Zwykle oba są bardzo mylące dla początkowego początku ucznia w zakresie programowania obiektowego. Jeśli zdefiniujemy jedną klasę abstrakcyjną, ale niczego nie zaimplementujemy, będzie to absolutnie wyglądać jak interfejs, nikt nie będzie w stanie zrozumieć żadnej różnicy między nimi, a nie deklaracji. Istnieje jednak wiele różnic i podobieństw między klasami Interface i Abstract.
Klasa abstrakcyjna to prosta klasa, która definiuje się jako abstrakcyjna i nie można jej utworzyć. Klasa abstrakcyjna musi zostać rozszerzona o niektóre podklasy w celu wykorzystania wszystkich funkcji lub użyteczności tej konkretnej nadklasy lub klasy abstrakcyjnej. W rzeczywistości pomaga utrzymać właściwą hierarchię nadklas lub podklas. Wiele podklas może używać tej samej nazwy funkcji z różnymi definicjami. W rzeczywistości zapewnia, że aplikacja powinna przestrzegać określonej hierarchii lub standardów, które przenoszą do aplikacji odpowiednią możliwą do wyjaśnienia funkcjonalność.
Interfejs absolutnie nie jest klasą, podobnie jak encja zdefiniowana jednym konkretnym słowem Interfejs. Interfejs nigdy nie zdefiniował żadnej definicji, całkowicie zależy od konkretnej deklaracji, która powinna odziedziczyć wiele klas jednocześnie. Wiele klas może zdefiniować wiele definicji tej pojedynczej deklaracji jednego określonego interfejsu. Posiada również ten sam rodzaj udogodnień, co klasa Abstract, pomaga głównie utrzymać tę samą hierarchię podklas o innej definicji. Ale główna różnica między klasą abstrakcyjną a interfejsem polega na tym, że wiele klas abstrakcyjnych nie jest możliwe, podczas gdy możliwe jest dziedziczenie wielu interfejsów. Ponieważ C # nie obsługuje wielu spadków, interfejs zapewnia ten sam rodzaj funkcjonalności.
Bezpośrednie porównanie między streszczenie C # a interfejs (infografiki)
Poniżej znajduje się lista najlepszych porównań między streszczeniem C # a interfejsem
Kluczowe różnice między streszczeniem C # a interfejsem
Niektóre kluczowe różnice wyjaśniono poniżej między C # Abstract a Interface
- Zarówno klasa abstrakcyjna, jak i interfejs są faktycznie używane przez jedną lub wiele podklas. Głównym ograniczeniem jest to, że jedna podklasa nie jest w stanie rozszerzyć wielu klas abstrakcyjnych, co oznacza, że nie jest możliwe wielokrotne dziedziczenie, podczas gdy podklasa może odziedziczyć wiele interfejsów za jednym razem.
- Abstrakt może zawierać ciało z definicją lub tylko definicją metody. Podklasa, która rozszerza tę klasę abstrakcyjną, może korzystać z metody body, a także może wyjaśniać szczegóły ciała dowolnej konkretnej definicji metody abstract, co oznacza, że możliwe jest zastąpienie. Klasa abstrakcyjna powinna mieć co najmniej jedną metodę abstrakcyjną (oznacza jedyną definicję metody bez treści). Interfejs ma tylko definicję metody, nie powinien zawierać żadnych szczegółów treści metody definicyjnej. Jedno dziedziczenie podklasy, które interfejs i wykorzystują te, które nie definiują metody poprzez dynamiczne podawanie odpowiednich szczegółów treści dla wielu podklas.
- Klasa abstrakcyjna może mieć różne modyfikatory dostępu, takie jak publiczny, prywatny lub chroniony, więc każda metoda lub właściwości w klasie abstrakcyjnej mogą definiować różne modyfikatory dostępu. Podczas gdy dla interfejsu nie jest w stanie podać żadnego modyfikatora dostępu, więc wszystkie właściwości lub metody zdefiniowane w interfejsie powinny być modyfikatorem dostępu publicznego, nie mają opcji definiowania innego modyfikatora dostępu w interfejsie.
- Koncepcja nadklasy i podklasy jest idealna dla klasy abstrakcyjnej. Klasa abstrakcyjna może otrzymać podstawową tożsamość podklasy, zwykle posiada podobny rodzaj obiektu tej konkretnej podklasy. Natomiast interfejs zwykle definiuje jeden konkretny rodzaj działalności peryferyjnej klasy. Załóżmy, że mamy jeden interfejs o nazwie Moveable, teraz interfejs ten może być dziedziczony zarówno przez samochód, jak i człowieka. Zarówno samochody, jak i ludzie są zupełnie innym przedmiotem klasowym i nie utrzymują między nimi żadnego związku.
- Jeśli aplikacja ma różne implementacje, ale aktywność tej konkretnej implementacji jest prawie taka sama, lepiej użyć klasy Abstract, w której można zdefiniować tę konkretną logikę, a wszystkie podklasy mogą łatwo uzyskać dostęp do tej samej logiki za każdym razem. Jako przykładową łączność z bazą danych, której zwykle używają wszystkie podklasy, więc jeśli ten kod generowania i zamykania łączności może być przechowywany w klasie abstrakcyjnej, każda podklasa będzie miała łatwy dostęp do tej samej klasy. Podczas gdy wiele implementacji chce udostępniać tylko podpis metody, interfejs jest zawsze lepszy.
Tabela porównawcza C # Streszczenie kontra interfejs
Poniżej znajduje się tabela porównawcza między streszczeniem C # a interfejsem
PODSTAWA DO
PORÓWNANIE | Klasa abstrakcyjna | Berło |
Wielokrotne dziedziczenie | Jedna podklasa może rozszerzyć tylko jedną klasę abstrakcyjną, a nie wiele. | Jedna podklasa może implementować wiele interfejsów, które pomagają w odzyskaniu, nie obsługując wielu funkcji dziedziczenia języka C #. |
Definicja klasy | Interfejs nigdy nie definiuje żadnej konkretnej treści definicji, po prostu przechowuje definicję, która została później poprawnie zaimplementowana przez podklasę. | Abstrakt może zawierać całe ciało z definicją, a także może zawierać jedyną definicję podobną do interfejsu, która może zostać zastąpiona przez dowolną podklasę. Każda klasa abstrakcyjna powinna mieć co najmniej jedną metodę abstrakcyjną, która zawiera tylko szczegóły definicji, treść zostanie opisana w dalszej części podklasy. |
Modyfikator dostępu | Interfejs nigdy nie ma modyfikatora dostępu w swojej definicji. Interfejs zwykle traktuje wszystkie właściwości jako publiczne. | Klasa abstrakcyjna może mieć modyfikator dostępu do swojej definicji. Tak więc wszystkie właściwości mogą być publiczne, prywatne lub chronione. |
Występ | Zwykle niewiele więcej czasu zajmuje znalezienie odpowiedniej metody podklasy. | Jest trochę szybszy niż interfejs. |
Wniosek
Zarówno klasa interfejsu, jak i klasa abstrakcyjna są używane głównie do inteligentnego zarządzania wieloma implementacjami, dzięki czemu można łatwo uniknąć nadmiarowego kodu i wszystko ma odpowiednią hierarchię i strukturę. Interfejs zawsze będzie lepszy do udostępniania tego samego podpisu w wielu instancjach. Załóżmy, że Pantaloony mają jedną główną gałąź, a także wiele gałęzi w innym miejscu. Teraz jeden konkretny produkt można uruchomić w określonej lokalizacji za pomocą jednego podejścia, podczas gdy w innej lokalizacji uruchamia się w innym podejściu. W takim przypadku logika, powinna być inna dla tego samego produktu w wielu lokalizacjach, tego rodzaju logika może być lepiej obsługiwana przez interfejs. Teraz ten sam produkt może mieć pewne wspólne cechy, które należy podkreślić w każdej branży w momencie wprowadzenia tego produktu na rynek. W takim przypadku, aby uniknąć nadmiarowości kodu, dodaj tę samą logikę do klasy abstrakcyjnej i można jej użyć w wielu implementacjach w różnych gałęziach.
Polecany artykuł
To był przydatny przewodnik po różnicach między C # Abstract a Interface tutaj. Omówiliśmy bezpośrednie porównanie, kluczową różnicę wraz z infografiką. Możesz także spojrzeć na następujący artykuł, aby dowiedzieć się więcej -
- Interfejs C # vs Klasa abstrakcyjna
- Interfejs Java a klasa abstrakcyjna
- Interfejs maszynopisu a klasa
- TypeScript Type vs Interface
- Dostęp do modyfikatorów w PHP
- Klasy abstrakcyjne w JavaScript