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

Kluczowa różnica: Interfejs lub protokół jest popularnym sposobem, który pozwala niezwiązanym obiektom komunikować się ze sobą. Reprezentuje uzgodnione zachowanie, które ułatwia interakcję między dwoma obiektami. Klasa abstrakcyjna to klasa obiektów, których nie można utworzyć w instancji lub skonfigurować instancji obiektu. Ta klasa może nie mieć implementacji lub może mieć niekompletną implementację.

Java, C ++, C # to skomplikowane języki programowania, które wymagają szczegółowej analizy i zrozumienia, aby móc z nimi pracować. Istnieje wiele różnych metod używanych w tych językach, które decydują o tym, jak język będzie działać. Interfejs i Klasa abstrakcyjna to dwa mylące pojęcia, które są częścią OOP (programowanie obiektowe). Te dwa mogą być stosowane pojedynczo lub razem ze sobą. Te dwa są całkowicie różne od siebie i są używane w różnych przypadkach.

Java jest językiem programowania, na który wpłynął język C. Składa się on z dużej części składni C i C ++, jednak ma mniej obiektów niskiego poziomu. Java jest uniwersalnym językiem programowania, który ma mniej zależności implementacyjnych w porównaniu do poprzednich języków. Jest to język współbieżny, oparty na klasach i obiektowy.

Java została opracowana przez Jamesa Goslinga w Sun Microsystems i została wydana w 1995 roku. Pierwotnie została wydana jako główny komponent platformy Java Sun Microsystems. Od tego czasu Sun przejął licencję na większość technologii Java na licencji GNU General Public Licence. Oznacza to, że cała technologia objęta licencją GNU General Public Licence jest open source i ogólnie dostępna bezpłatnie. Sun Microsystems ostatecznie połączył się z Oracle Corporation. Od 2012 roku Java stała się jednym z najpopularniejszych języków programowania. Dotyczy to szczególnie aplikacji internetowych typu klient-serwer. Wiele innych systemów opracowało alternatywne implementacje technologii Sun, takie jak GNU Compiler for Java i GNU Classpath.

Interfejs lub protokół jest popularnym sposobem, który pozwala niezwiązanym obiektom komunikować się ze sobą. Reprezentuje uzgodnione zachowanie, które ułatwia interakcję między dwoma obiektami. Interfejs zawiera klucz do różnych realizowanych działań i służy jako połączenie między dwoma różnymi obiektami. Jeśli klasa obiektów jest narażona na działanie interfejsu, klasa musi przestrzegać zachowania zaimplementowanego przez interfejs. Zwykle interfejsy zawierają tylko stałe deklaracje i sygnatury metod. Każdy interfejs implementujący określony interfejs musi stosować wszystkie metody wymienione w interfejsie lub być zadeklarowany jako klasa abstrakcyjna. W języku Java dowolny obiekt można zdefiniować jako interfejs, jeśli ten obiekt jest pusty lub zawiera klasę, w której implementuje dany interfejs. Można wdrożyć wiele interfejsów do jednej klasy w Javie za pomocą słów kluczowych narzędzi.

Klasa abstrakcyjna to klasa obiektów, których nie można utworzyć w instancji lub skonfigurować instancji obiektu. Ta klasa może nie mieć implementacji lub może mieć niekompletną implementację. Może również zawierać abstrakcyjne metody lub właściwości, które są wspólne dla wszystkich podklas. W niektórych językach programowania typy abstrakcyjne bez implementacji są znane jako interfejsy. W języku Java typ abstrakcyjny można utworzyć za pomocą słowa kluczowego "abstract" w definicji klasy. Celem posiadania klasy abstrakcyjnej jest umieszczenie wszystkich metod, które nie są zaimplementowane w klasie abstrakcyjnej i pozostawienie jej podklasie w celu określenia sposobu implementacji tych klas. Jeśli klasa ma jedną abstrakcyjną metodę, klasa musi być zadeklarowana jako klasa abstrakcyjna, chociaż nie trzeba mieć co najmniej jednej metody deklarowania abstrakcji klasy.

Malliktalksjava.in wymienia główne różnice między interfejsem i streszczeniem jako:

  • Klasa abstrakcyjna ma konstruktor, ale interfejs nie.
  • Klasy abstrakcyjne mogą mieć implementacje dla niektórych członków (metod), ale interfejs nie może mieć implementacji dla żadnego z jej członków.
  • Klasy abstrakcyjne powinny mieć podklasy, które będą bezużyteczne.
  • Interfejsy muszą mieć implementacje innych klas, które będą bezużyteczne
  • Tylko interfejs może rozszerzyć inny interfejs, ale każda klasa może rozszerzyć klasę abstrakcyjną.
  • Wszystkie zmienne w interfejsach są domyślnie końcowe
  • Interfejsy zapewniają formę wielokrotnego dziedziczenia. Klasa może obejmować tylko jedną inną klasę.
  • Interfejsy są ograniczone do publicznych metod i stałych bez implementacji. Klasy abstrakcyjne mogą mieć częściową implementację, części chronione, metody statyczne itp.
  • Klasa może implementować kilka interfejsów. Ale w przypadku klasy abstrakcyjnej klasa może rozciągać się tylko na jedną klasę abstrakcyjną.
  • Interfejsy są powolne, ponieważ wymagają dodatkowego pośrednictwa, aby znaleźć odpowiednią metodę w rzeczywistej klasie. Klasy abstrakcyjne są szybkie.
  • Modyfikator dostępności (publiczny / prywatny / wewnętrzny) jest dozwolony dla klasy abstrakcyjnej. Interfejs nie zezwala na modyfikator dostępu
  • Klasa abstrakcyjna może zawierać pełne lub niekompletne metody. Interfejsy mogą zawierać tylko podpis metody, ale bez treści. Zatem klasa abstrakcyjna może implementować metody, ale interfejs nie może implementować metod.
  • Klasa abstrakcyjna może zawierać pola, konstruktory lub destruktory i właściwości implementacji. Interfejs nie może zawierać pól, konstruktorów ani destruktorów i ma tylko podpis właściwości, ale brak implementacji.
  • Różne modyfikatory dostępu, takie jak abstrakcyjne, chronione, wewnętrzne, publiczne, wirtualne itp. Są użyteczne w klasach abstrakcyjnych, ale nie w interfejsach.
  • Zakres abstrakcji zależy od klasy pochodnej.
  • Zasięg interfejsu odpowiada dowolnemu poziomowi jego łańcucha dziedziczenia.

Informacje na temat tabeli pochodzą z witryny codeproject.com i mindprod.com

Berło

Klasa abstrakcyjna

Wielokrotne dziedziczenie

Klasa może dziedziczyć kilka interfejsów.

Klasa może dziedziczyć tylko jedną klasę abstrakcyjną.

Domyślna implementacja

Interfejs nie może dostarczyć żadnego kodu, tylko podpis.

Klasa abstrakcyjna może dostarczyć pełny, domyślny kod i / lub tylko szczegóły, które muszą zostać zastąpione.

Modyfikatory dostępu

Interfejs nie może mieć modyfikatorów dostępu dla podsystemów, funkcji, właściwości itd. Wszystko jest przyjmowane jako publiczne.

Klasa abstrakcyjna może zawierać modyfikatory dostępu dla podsystemów, funkcji, właściwości.

Core vs. Peripheral

Interfejsy są używane do definiowania peryferyjnych umiejętności klasy. Innymi słowy, zarówno człowiek jak i pojazd mogą dziedziczyć z interfejsu wymiennego.

Klasa abstrakcyjna definiuje rdzenną tożsamość klasy i tam jest używana dla obiektów tego samego typu.

Jednorodność

Jeśli różne implementacje dzielą tylko sygnatury metod, lepiej jest użyć interfejsów.

Jeśli różne implementacje są tego samego rodzaju i używają wspólnego zachowania lub statusu, wówczas lepiej zastosować klasę abstrakcyjną.

Prędkość

Wymaga więcej czasu na znalezienie właściwej metody w odpowiednich klasach.

Szybki

Dodawanie funkcjonalności

Jeśli dodamy nową metodę do interfejsu, musimy wyśledzić wszystkie implementacje interfejsu i zdefiniować implementację dla nowej metody.

Jeśli dodamy nową metodę do klasy abstrakcyjnej, mamy opcję domyślnej implementacji, dlatego cały istniejący kod może działać poprawnie.

Pola i stałe

W interfejsach nie można definiować żadnych pól.

Klasa abstrakcyjna może mieć zdefiniowane pola i stałe.

Jędrność

Stałe deklaracje w interfejsie są przypuszczalnie publicznym końcem statycznym.

Współdzielony kod można dodać do klasy abstrakcyjnej.

Stałe

Tylko statyczne stałe końcowe, mogą używać ich bez kwalifikacji w klasach implementujących interfejs.

Możliwe są zarówno stałe instancji, jak i statyczne. Zarówno statyczny jak i instancyjny kod inicjujący są również możliwe do obliczenia stałych.

Wygoda dla osób trzecich

Implementację interfejsu można dodać do dowolnej istniejącej klasy strony trzeciej.

Klasa strony trzeciej musi zostać przepisana, aby rozciągać się tylko od klasy abstrakcyjnej.

is-a vs.able lub can-do

Interfejsy są często używane do opisania peryferyjnych zdolności danej klasy, a nie jej centralnej tożsamości, np. Klasa Automobile może implementować interfejs Recyklingu, który może być zastosowany do wielu innych, całkowicie niezwiązanych ze sobą obiektów.

Klasa abstrakcyjna definiuje rdzeń tożsamości swoich potomków. Wdrożone interfejsy wymieniają ogólne rzeczy, które klasa może robić, a nie rzeczy, które są klasą.

W kontekście Java użytkownicy zazwyczaj powinni implementować interfejs Runnable zamiast rozszerzać wątek, ponieważ nie są naprawdę zainteresowani zapewnieniem nowej funkcji Thread, zwykle chcą, aby jakiś kod posiadał możliwość niezależnego działania. Chcą stworzyć coś, co można uruchomić w wątku, a nie nowy rodzaj wątku. Podobny jest a kontra ma - debata pojawia się, gdy zdecydujesz się dziedziczyć lub delegować.

Podłącz

Użytkownik może napisać nowy moduł zastępujący dla interfejsu, który nie zawiera wspólnego kija wspólnego z istniejącymi implementacjami. Kiedy użytkownik implementuje interfejs, zaczyna od zera bez żadnej domyślnej implementacji. Użytkownik musi uzyskać narzędzia z innych klas; nic nie ma interfejsu innego niż kilka stałych. Daje to użytkownikowi swobodę realizacji radykalnie odmiennego projektu wewnętrznego.

Użytkownik musi korzystać z abstrakcyjnej klasy, tak jak jest to dla kodu bazowego, ze wszystkimi powiązanymi z nią bagażami, dobrymi lub złymi. Autor klas abstrakcyjnych narzucił strukturę użytkownikowi.

Konserwacja

Jeśli kod klienta mówi tylko pod kątem interfejsu, możesz łatwo zmienić konkretną implementację za pomocą metody fabrycznej.

Jeśli kod klienta mówi tylko w kategoriach klasy abstrakcyjnej, możesz łatwo zmienić konkretną implementację za pomocą metody fabrycznej.

Zalecane

Podobne Artykuły

  • popularne porównania: Różnica między Pokémon Diamond i Pearl

    Różnica między Pokémon Diamond i Pearl

    Kluczowa różnica: gry Pokémon Diamond i Pearl są pierwszą główną serią gier RPG Pokémon. Pomiędzy Pokémon Diamond i Pearl, jedyną różnicą jest to, że Pokémon Diamond i Pokémon Pearl mają swoje własne ekskluzywne wersje. W przeciwnym razie programista, wydawca, scenarzysta, funkcje i wiele innych rzeczy w grach są takie same. Pokémon Diamond i Pe
  • popularne porównania: Różnica między Wikipedią a WikiLeaks

    Różnica między Wikipedią a WikiLeaks

    Kluczowa różnica: chociaż Wikipedia i WikiLeaks są organizacjami non-profit, funkcjonują one zupełnie inaczej, to znaczy Wikipedia jest darmową internetową encyklopedią informacyjną, podczas gdy WikiLeaks jest darmową publikacją internetową, w której tajne informacje są ujawniane społeczeństwu. Wikipedia to in
  • popularne porównania: Różnica między Republiką a Monarchią

    Różnica między Republiką a Monarchią

    Kluczowa różnica : Monarchia jest formą rządzenia królem, królową lub cesarzem. Republika jest formą rządu, w którym ludzie lub ich wybrani przedstawiciele posiadają najwyższą władzę. Republika i monarchia to dwie różne formy rządów. Podczas gdy monarchie były normą raz na jakiś czas, zmieniło się to z biegiem czasu. Dzisiaj najbardziej pr
  • popularne porównania: Różnica między Kickboxing a Savate

    Różnica między Kickboxing a Savate

    Kluczowa różnica: Kickboxing to nowoczesna japońska forma sportów walki i sztuki walki, natomiast Savate to tradycyjna francuska sztuka walki. Kickboxing, znany również jako Aero-boxing, to walka w zwarciu i forma walki należąca do Japonii. Dziś sztuka walki jest praktykowana i dzielona na japońskie kick-boxing (inicjowane w latach 60.) i amery
  • popularne porównania: Różnica między kablem i przewodem

    Różnica między kablem i przewodem

    Kluczowa różnica: drut jest pojedynczym przewodnikiem, natomiast kabel jest grupą dwóch lub więcej przewodów. Termin "przewody" i "kable" jest używany jako synonim, ale w rzeczywistości są one zupełnie inne. Jednym ze sposobów ich odróżnienia jest pamiętanie, że przewody są częścią kabli. Ponadto przewody
  • popularne porównania: Różnica między białym rumem i ciemnym rumem

    Różnica między białym rumem i ciemnym rumem

    Kluczowa różnica: Białe rum mają raczej czysty i słodki smak. Ciemne rum są dość popularne i mają odważniejszy, pełniejszy smak. Ciemne rum mają również większą ilość podstawowych melasy, a czasami karmelowy smak, a także odcień przypraw. Rum to rodzaj likieru wytwarzanego ze sfermentowanej trzciny cukrowej i melasy, który jest syropowatym produktem ubocznym trzciny cukrowej. Proces robienia rum
  • popularne porównania: Różnica między szeryfem a komornikiem

    Różnica między szeryfem a komornikiem

    Kluczowa różnica : Szeryf jest urzędnikiem państwowym, który utrzymuje prawo i porządek w swoim hrabstwie. Jest wybierany przez obywateli. Urzędnik sądowy jest prawnikiem, który jest odpowiedzialny za prawo i porządek w sali sądowej. Jest wyznaczany przez szeryfa. Według Wikipedii urzędnik sądowy jest prawnikiem, któremu przysługuje pewien stopień autorytetu, opieki lub jurysdykcji. Jest wyszkolony
  • popularne porównania: Różnica między Samsung Galaxy Win i Samsung Galaxy S Duos

    Różnica między Samsung Galaxy Win i Samsung Galaxy S Duos

    Kluczowa różnica: Samsung Galaxy Win to kolejny telefon firmy Samsung Corporation. Samsung Galaxy Win występuje w dwóch wariantach: Single-SIM i Dual-SIM. Samsung Galaxy Win jest również sprzedawany jako Samsung Galaxy Grand Quattro na niektórych rynkach. Telefon to czterordzeniowy smartfon skierowany do segmentu budżetu. Samsun
  • popularne porównania: Różnica między zapachem a perfumami

    Różnica między zapachem a perfumami

    Kluczowa różnica: Perfumy i zapach mogą być użyte do określenia przyjemnego zapachu, który jest ogólnie uzyskiwany przez mieszanie pachnących olejków eterycznych lub związków aromatycznych. Jednak słowo "perfumy" jest czasem preferowane w stosunku do zapachu, co jest związane z bardziej eleganckim zapachem. Bardzo trudn

Wybór Redakcji

Różnica między komputerem stacjonarnym a laptopem

Kluczowa różnica: komputer stacjonarny lub stacjonarny to komputer osobisty stacjonujący w ustalonej lokalizacji. Z drugiej strony laptop to kompaktowa wersja komputera stacjonarnego. Ogólnie rzecz biorąc, komputer jest bardziej masywny niż laptop. Laptopy są preferowane ze względu na ich przenośność, podczas gdy komputery są preferowane dla bardziej fajnych części i funkcji. Komputery zm