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 formatem plików audio WAV i MP4

    Różnica między formatem plików audio WAV i MP4

    Kluczowa różnica: WAV to format audio. Oznacza Waveform Audio File Format i został opracowany przez firmę Microsoft i IBM dla komputerów PC. MP4 jest oparty na typie plików MOV firmy Apple. MPEG-4 Part 12 został opracowany z pliku MOV firmy Apple i ostatecznie zaowocował MPEG-4 Part 14, który jest formatem MP4. WAV, sk
  • popularne porównania: Różnica między kontrolą jakości i testowaniem

    Różnica między kontrolą jakości i testowaniem

    Kluczowa różnica : Zapewnianie jakości i testowanie często są mylone. Kontrola jakości bada proces produkcyjny i ustala wady w procesie produkcyjnym, podczas gdy testowanie jest procesem kontroli produktu na różnych etapach w celu powstrzymania wadliwych przedmiotów przed dotarciem do klienta. Termin
  • popularne porównania: Różnica między hurtownią danych a bazą danych

    Różnica między hurtownią danych a bazą danych

    Kluczowa różnica: Data Warehouse to duże centralne repozytorium danych historycznych. Te dane są gromadzone z różnych działów i jednostek firmy. Data Mart można uznać za podzbiór hurtowni danych lub po prostu repozytorium danych, które zasadniczo koncentruje się na jednym obszarze funkcjonalnym. Oba różnią
  • popularne porównania: Różnica między Bachelor of Arts a Bachelor of Science in Psychology

    Różnica między Bachelor of Arts a Bachelor of Science in Psychology

    Kluczowa różnica: Bachelor of Arts in Psychology ogólnie studiuje psychologię od aspektu sztuki i humanistyki, podczas gdy Bachelor of Science in Psychology bada przedmiot z naciskiem na nauki. Bachelor of Arts (BA) w dziedzinie psychologii i Bachelor of Science (BS) w dziedzinie psychologii są dwa kursy, które można realizować, aby uzyskać akredytację w dziedzinie psychologii. Jeśli ch
  • popularne porównania: Różnica między socjalizmem a komunizmem

    Różnica między socjalizmem a komunizmem

    Kluczowa różnica: socjalizm odnosi się do systemu gospodarczego, który ma na celu dystrybucję zasobów dla każdej osoby, zgodnie z ich czynami. Komunizm odnosi się do systemu ekonomicznego i politycznego, który ma na celu dystrybucję zasobów dla każdej osoby zgodnie z ich potrzebami. Komunizm i socjalizm są ideologicznymi zasadami, które rozwinęły się w odpowiedzi na rewolucję przemysłową. Podczas rewolucji
  • popularne porównania: Różnica między mitozy i mejozy

    Różnica między mitozy i mejozy

    Kluczowa różnica: Mitoza to proces, w którym komórka eukariotyczna oddziela chromosomy w jądrze komórkowym na dwa identyczne zestawy. Zasadniczo komórka (komórka macierzysta) dzieli się na dwie komórki (komórki potomne), które są identyczne z komórką macierzystą. Mejoza, z drugiej strony, jest specjalnym rodzajem podziału komórek koniecznym do rozmnażania płciowego u eukariontów. W procesie mejozy k
  • popularne porównania: Różnica między LPG a CNG

    Różnica między LPG a CNG

    Kluczowa różnica : Różnica między LPG i CNG polega na tym, na czym składają się lub składają. CNG głównie składa się z metanu, podczas gdy LPG zawiera butan, propan i wiele innych chemikaliów. Określenie LPG oznacza "Liquefied Petroleum Gas". LPG jest sztucznym produktem. Jest to mieszanina gazów węglowodorowych, takich jak butan i propan oraz inne chemikalia. Gazy te są wspól
  • popularne porównania: Różnica między pracą, pracą i biznesem

    Różnica między pracą, pracą i biznesem

    Kluczowa różnica: Praca jest czymś, co ludzie robią w zamian za pieniądze, takie jak wynagrodzenie. Praca jest często krótkotrwała i odbywa się tylko jako osoba wymagająca pieniędzy na życie. Często ma się pracę w jakiejś firmie. Biznes, przedsiębiorstwo lub firma to organizacja, która aktywnie angażuje się w działalność handlową, przemysłową lub zawodową. Praca, praca i biznes to
  • popularne porównania: Różnica między Bitcoinem i Ripple

    Różnica między Bitcoinem i Ripple

    Kluczowa różnica: Bitcoin był pierwszym pomyślnie wdrożonym protokołem kryptowalutowym peer-to-peer. Ripple był pierwotnie systemem płatności, wymianą walut i siecią przekazów pieniężnych. Ostatecznie zbudował swoją sieć, aby włączyć własną kryptowalutę o nazwie ripples. Bitcoin to rodzaj protokołu kryptowalutowego typu peer-to-peer. Kryptowaluta to rodzaj

Wybór Redakcji

Różnica między stażem a stażami

Kluczowa różnica: Staż jest programem szkoleniowym dla białych kołnierzyków lub kariery zawodowej. Praktyki zawodowe to program szkoleniowy dla zawodów rzemieślniczych lub handlowych. Praktyki i staż to dwie rzeczy, które często dobrze prezentują się w życiorysie. Doradcy w college'u często sugerują, że dana osoba podejmuje staż w trakcie semestru lub przerwy wakacyjnej, ponieważ daje studentowi większą szansę na wybranie życiorysu przez firmę. Wiele osób często myli