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

  • różnica pomiędzy: Różnica między glukozą a galaktozą

    Różnica między glukozą a galaktozą

    Kluczowa różnica: Określenie "glukoza" pochodzi od greckiego "glukus", co oznacza "słodki". Glukoza jest również znana jako D-glukoza, dekstroza lub cukier winogronowy występujący w roślinach i jest produktem ubocznym fotosyntezy i paliw do oddychania komórkowego. Glukoza
  • różnica pomiędzy: Różnica między polityką prywatności a wyłączeniem odpowiedzialności

    Różnica między polityką prywatności a wyłączeniem odpowiedzialności

    Kluczowa różnica: Polityka prywatności powinna informować odwiedzających witrynę o fakcie, że strona internetowa zbierze dane, a także jakie dane zostaną zebrane i jakie dane będą wykorzystywane. Zrzeczenie się to oświadczenie, które ostrzega publiczność, że strona nie jest prawnie odpowiedzialna za informacje na niej podane i co użytkownik robi z tymi informacjami. Często można zna
  • różnica pomiędzy: Różnica między Twoim a Twoim

    Różnica między Twoim a Twoim

    Kluczowa różnica: Główna różnica między "twoim" i "twoim" polega na tym, że "twoja" jest twoją dzierżawczą formą, podczas gdy "ty" oznacza "jesteś". "Twój" powinien być używany w taki sam sposób, jak jego lub jej. "You're" powinno być używane tylko wtedy, gdy można je zastąpić w zdaniu "jesteś". Zamieszanie pomiędzy
  • różnica pomiędzy: Różnica między Endotherm a Homeotherm

    Różnica między Endotherm a Homeotherm

    Kluczowa różnica: Endoterma to organizm, który utrzymuje odpowiednią temperaturę ciała w sprzyjającym stopniu bez pomocy zewnętrznego źródła ciepła. Endotermy robią to, wykorzystując lub uwalniając ciepło uwalniane przez procesy wewnętrzne. Homeotherm faktycznie idzie w parze z endotermami, ponieważ homeotermia to proces termoregulacji, który jest używany do utrzymywania stabilnej wewnętrznej temperatury ciała, niezależnie od zewnętrznego wpływu. Endotermy faktycznie wy
  • różnica pomiędzy: Różnica między żelazem a stalą

    Różnica między żelazem a stalą

    Kluczowa różnica: żelazo jest pierwiastkiem chemicznym, który znajduje się w obfitości w skorupie ziemskiej. Stal to stop, co oznacza, że ​​jest mieszaniną dwóch lub więcej metalicznych elementów lub jednego metalicznego i niemetalicznego elementu. Żelazo i stal to dwie substancje, które często znajdują się w różnych zastosowaniach, takich jak naczynia, konstrukcje itp. Te dwie substancje s
  • różnica pomiędzy: Różnica między Alcatel One Touch Idol Ultra i Alcatel One Touch Idol

    Różnica między Alcatel One Touch Idol Ultra i Alcatel One Touch Idol

    Kluczowa różnica: Alcatel One Touch Idol Ultra wyposażony jest w pojemnościowy ekran dotykowy HD AMOLED o przekątnej 4, 65 cala i rozdzielczości 720 x 1280 pikseli. Telefon jest zasilany dwurdzeniowym procesorem 1, 2 GHz na MediaTek MTK 6577 i 1 GB pamięci RAM. Telefon ma szerokość 6, 45 mm, co skłoniło firmę do uznania go za najcieńszy smartfon na rynku. Alcatel One
  • różnica pomiędzy: Różnica między esencją migdałową a ekstraktem z migdałów

    Różnica między esencją migdałową a ekstraktem z migdałów

    Kluczowa różnica: Esencja migdałowa i wyciąg z migdałów to składniki smakowe. Wyciągi z migdałów wytwarza się przez połączenie oleju migdałowego z alkoholem etylowym. Czysty ekstrakt z migdałów jest wytwarzany z oleju z gorzkich migdałów, podczas gdy naturalny ekstrakt z migdałowca jest wytwarzany z esencji z kory brzoskwini. Istota, z drugiej
  • różnica pomiędzy: Różnica między dyskiem SSD a dyskiem twardym

    Różnica między dyskiem SSD a dyskiem twardym

    Kluczowa różnica: dyski SSD wykorzystują pamięć flash, aby umożliwić użytkownikom przechowywanie danych. Dyski twarde są podobne do wewnętrznych dysków twardych przy użyciu taśm magnetycznych do przechowywania danych. Ze względu na boom technologiczny, prawie wszystko dzieje się na komputerze w tych dniach. Przy wciąż ro
  • różnica pomiędzy: Różnica między Spice Stellar Pinnacle Pro i Micromax A116 Canvas HD

    Różnica między Spice Stellar Pinnacle Pro i Micromax A116 Canvas HD

    Kluczowa różnica: Spice Stellar Pinnacle Pro Mi-535 to czterokanałowy telefon klasy średniej o prędkości 1, 2 GHz. Działa na Androidzie 4.2 Jelly Bean i jest zasilany przez 1 GB pamięci RAM. Telefon jest wyposażony w aparat 8 MP z autofokusem i lampą błyskową LED. Telefon ma również 5-milimetrową przednią kamerę szerokokątną z przodu, również z funkcją automatycznego ustawiania ostrości. Micromax A116 Canvas

Wybór Redakcji

Różnica między motto a sloganem

Kluczowa różnica : Kluczowa różnica między nimi polega na tym, że "motto" definiowane jest jako krótkie zdanie lub wyrażenie, które wyraża zasadę lub regułę kierującą zachowaniem danej osoby, podczas gdy "hasło" definiuje się jako grupę słów lub słów. frazę, która jest łatwa do zapamiętania i używana przez grupę lub firmę w celu przyciągnięcia uwagi. Często po angielsku ludzie są