Logo pl.removalsclassifieds.com

Różnica między klasą abstrakcyjną a interfejsem w C# (z tabelą)

Spisu treści:

Anonim

Projektując aplikacje lub rozpoczynając karierę programisty, trzeba znać różnicę między klasą abstrakcyjną a interfejsem w C#. Zarówno klasa abstrakcyjna, jak i interfejs są używane do osiągnięcia abstrakcji, w której można zrozumieć metody abstrakcyjne. Chociaż nie można ich obu używać jednocześnie.

Klasy abstrakcyjne i interfejsy mogą wydawać się podobne na kilka sposobów, ale istnieją kluczowe różnice, które pomagają określić, który jest najlepszym wyborem dla kogoś, aby osiągnąć określony cel związany z programowaniem.

Nigdy nie powinno się używać bezpośrednio klasy Abstract. Ta klasa musi mieć co najmniej jedną abstrakcyjną metodę. I będzie oznaczony słowem kluczowym lub abstraktem modyfikatora w definicji klasy. Z drugiej strony interfejs pozwala tylko zdefiniować funkcjonalność. Nie można go wdrożyć. Chociaż klasa może tworzyć tylko jedną klasę abstrakcyjną, może również korzystać z różnych interfejsów.

Klasa abstrakcyjna a interfejs w C#

ten różnica między klasą abstrakcyjną a interfejsem w C# jest to, że główną funkcją klasy abstrakcyjnej jest wyjaśnienie prawdziwej tożsamości klasy, podczas gdy główną funkcją interfejsu jest wyjaśnienie zewnętrznych możliwości klasy. Klasa abstrakcyjna nie zapewnia pełnej abstrakcji, podczas gdy interfejs może zapewnić pełną abstrakcję.

Wielokrotne dziedziczenie nie jest możliwe w klasie abstrakcyjnej, podczas gdy interfejs może umożliwiać wielokrotne dziedziczenie.

Tabela porównawcza między klasą abstrakcyjną a interfejsem w C#

Parametr porównania Klasa abstrakcyjna Interfejs w C#
Funkcjonalność Dodanie nowej metody do klasy abstrakcyjnej da możliwość podania domyślnej implementacji, a tym samym cały obecny kod będzie działał poprawnie Dodanie nowej metody do interfejsu pozwoli prześledzić wszystkie implementacje interfejsu i zdefiniować implementację dla ostatniej metody
Różne spadki Tylko jedna klasa abstrakcyjna może być dziedziczona przez klasę Kilka interfejsów może być dziedziczonych przez klasę
Co zawierają? Klasa abstrakcyjna zawiera składowe danych i konstruktory Interfejs w C# nie zawiera składowych danych i konstruktorów
Dostarczać Klasa abstrakcyjna może zapewnić pełny, domyślny kod i/lub szczegóły, które należy nadpisać Interfejs w C# nie jest w stanie dostarczyć żadnego kodu, tylko podpis
Szybkość ruchu Klasa abstrakcyjna jest szybka, jeśli chodzi o szybkość Interfejs w C# potrzebuje więcej czasu, aby uzyskać rzeczywistą metodę w odpowiednich klasach

Co to jest klasa abstrakcyjna w C#?

Klasa abstrakcyjna to coś, co może być tylko klasą bazową innych klas. Są to klasy, które mają jedną lub więcej metod abstrakcyjnych. Metoda abstrakcyjna jest znana jako metoda ogłaszana, ale nie zawiera żadnej implementacji.

Aby stworzyć klasę, musimy użyć modyfikatora „abstrakcyjnego”. Ten modyfikator wskazuje, że może brakować kilku implementacji, które będą wymagały zastosowania w pobranej z niego klasie. Klasa abstrakcyjna może zawierać zarówno abstrakcyjną, jak i nieabstrakcyjną składową.

Ta klasa abstrakcyjna powinna mieć co najmniej jedną metodę abstrakcyjną, która została już omówiona powyżej. Bez metody nie możemy zadeklarować tej klasy jako „abstrakcyjnej”.

Czasami klasy abstrakcyjne mogą nie być tworzone i potrzebują podklas, aby zapewnić implementacje dla metod abstrakcyjnych. Jeśli tworzymy klasę abstrakcyjną, to tworzymy klasę bazową, która może zawierać jedną lub więcej ukończonych metod, ale znajdziemy przynajmniej jedną lub więcej metod, które pozostały nieukończone i zadeklarowane jako abstrakcyjne.

Jeśli wszystkie metody klasy abstrakcyjnej pozostaną nieukończone, będzie to po prostu interfejs. Dostarczenie definicji klasy bazowej określającej sposób działania zestawu klas pochodnych, a następnie umożliwienie programistom wypełnienie implementacji w klasach pochodnych, jest faktycznym celem klasy abstrakcyjnej.

Możemy również powiedzieć, że celem klasy abstrakcyjnej jest dostarczenie definicji klasy bazowej.

Co to jest interfejs w C#?

Z drugiej strony interfejs nie jest klasą, która ma jedynie wskazówkę dotyczącą funkcjonalności. Możemy to nazwać wzorcem bez implementacji. Teoretycznie tylko definicja metod posiada deklarację składowych.

Możemy myśleć o tym jako o pustej powłoce, która nie zawiera implementacji jej członków. Interfejs jest jak abstrakcyjna klasa bazowa, która będzie miała tylko abstrakcyjne elementy członkowskie, takie jak metody, indeksatory, zdarzenia, właściwości itp.

Bezpośrednie utworzenie jego wystąpienia nie jest możliwe, a jego elementy członkowskie mogą być zaimplementowane przez dowolną klasę. Ponadto klasa może zaimplementować różne interfejsy, jednak klasa może uzyskać tylko jedną klasę. Innymi słowy, możemy powiedzieć, że interfejs ma tylko deklarację członków i nie zawiera implementacji tych członków.

Klasa implementuje interfejs i musi dostarczać definicję metod podanych w interfejsie. Oznacza to, że interfejs zapewnia standardową strukturę, której będzie musiała przestrzegać klasa pochodna.

Główne różnice między klasą abstrakcyjną a interfejsem w C#

Często zadawane pytania (FAQ) dotyczące klasy abstrakcyjnej i interfejsu w C#

Jaki jest pożytek z klasy abstrakcyjnej w C#?

C# to zorientowany obiektowo język programowania ogólnego przeznaczenia. Pochodzi od Microsoftu. Głównym celem C# jest wykorzystanie mocy obliczeniowej C++ z łatwością programowania Virtual Basic. Jest on oparty głównie na C++ i zawiera podobne funkcje jak Java.

Klasa abstrakcyjna jest sposobem na uzyskanie abstrakcji w C# i nie można jej bezpośrednio utworzyć. Funkcja klasy abstrakcyjnej polega na stworzeniu pewnej funkcjonalności lub stworzeniu wspólnego zachowania, które podklasy mogą dziedziczyć, implementować lub zastępować.

Zasadniczo zapewnia plan klas pochodnych i zawiera instrukcje dotyczące implementacji przez klasy pochodne, gdy klasa abstrakcyjna jest przez nie dziedziczona.

Co to jest interfejs w C# i dlaczego jest używany?

Interfejs w języku C# można zdefiniować jako definicję typu, taką jak klasa. Ale zawiera tylko deklaracje i jest dziedziczony przez klasy i struktury.

Jest używany z klasą do zdefiniowania kontraktu (uzgodnienia, co jest dostarczane przez klasę do aplikacji). Deklaruje tylko metody i różne właściwości, a klasa będzie dyktować, co faktycznie zrobi metoda.

Nie można go utworzyć jako obiektu i jest używany tylko jako zbiór metod i deklaracji właściwości. Definiuje jakie operacje mogą być lub będą wykonywane przez klasę.

Co to jest polimorfizm w C#?

Polimorfizm jest zwykle wyrażany jako jeden interfejs i wiele funkcji. Polimorfizm w C# oznacza zapewnienie możliwości przybierania wielu form. Po enkapsulacji i dziedziczeniu jest to kolejny filar koncepcji programowania obiektowego. C# umożliwia klasom implementowanie różnych metod, które zwykle są wywoływane pod tą samą nazwą.

W C# istnieją dwa rodzaje polimorfizmów:

Wniosek

Zrozumienie różnicy między nimi jest dość trudnym zadaniem. Potrafimy połączyć wszystkie informacje, jakie uda nam się znaleźć, a i tak to nie wystarczy. Teoretycznie oba są najważniejszymi terminami w programowaniu i są dość podobne, ale pod względem funkcjonalności bardzo się różnią.

Podczas gdy klasa abstrakcyjna jest pewnym typem klasy, która będzie działać jako baza dla innych klas, interfejs będzie po prostu pustą powłoką zawierającą wyłącznie deklaracje składowe.

Bibliografia

Różnica między klasą abstrakcyjną a interfejsem w C# (z tabelą)