Klasa abstrakcyjna w Javie i metodach [z przykładami]

Opublikowany: 2021-06-18

Poniższy artykuł omówi właściwości abstrakcji w Javie i jak można to osiągnąć za pomocą klas abstrakcyjnych i metod abstrakcyjnych. Będziemy badać cechy klas abstrakcyjnych i interfejsów w javie.

Spis treści

Abstrakcja

Jednym z ważnych pojęć Javy jest abstrakcja. Jest to właściwość, dzięki której użytkownik jest wyświetlany tylko z ważnymi szczegółami programu. Wszystkie nieistotne części są ukryte. Proces można wyjaśnić na przykładzie wiadomości e-mail. Nadawcy wysyłają wiadomość e-mail, która jest dostarczana do odbiorcy. Jedyną informacją znaną nadawcy jest to, że wiadomość e-mail została wysłana. Proces wysyłania wiadomości e-mail w tle jest ukryty przed użytkownikami. Podobny jest proces w programowaniu zorientowanym obiektowo (OOP), w którym istotne elementy są wyświetlane użytkownikowi, podczas gdy mniej istotne części są ukryte. Użytkownik nie ma informacji o procesie implementacji, znana jest jedynie funkcjonalność. Ten mechanizm jest znany jako abstrakcja, w której pokazane są tylko podstawowe cechy obiektu, ignorując inne cechy.

W Javie abstrakcję osiąga się poprzez abstrakcyjne klasy i interfejsy.

Klasa abstrakcyjna w Javie

Słowo kluczowe „abstract” jest używane w przypadku klas i metod abstrakcyjnych w Javie. Klasa abstrakcyjna zawiera w swojej deklaracji słowo kluczowe abstract.

Składnia abstrakcyjnej klasy Java to:

klasa abstrakcyjna nazwa_klasy

{

public abstract void the_abstractMethod();

public void the_normalMethod()

{

#ciało metody

}

}

Powyższa składnia pokazuje, że w klasie abstrakcyjnej mogą znajdować się zarówno metody normalne, jak i abstrakcyjne.

Oto kilka właściwości klas abstrakcyjnych:

  • Metody abstrakcyjne mogą, ale nie muszą być obecne w klasie abstrakcyjnej Java .
  • Obecność co najmniej jednej metody abstrakcyjnej w klasie sprawia, że ​​klasa staje się klasą abstrakcyjną.
  • Klasa abstrakcyjna nie może mieć żadnych obiektów i dlatego nie może być bezpośrednio tworzona.
  • Klasa abstrakcyjna może być używana tylko wtedy, gdy jest dziedziczona z innej klasy i implementuje metody abstrakcyjne.
  • Podczas dziedziczenia klasy abstrakcyjnej wymagane są odpowiednie implementacje metod abstrakcyjnych.
  • W klasie abstrakcyjnej Javy mogą występować zarówno metody zwykłe, jak i abstrakcyjne .
  • Konstruktory sparametryzowane mogą być obecne w klasie abstrakcyjnej. Ponadto klasa abstrakcyjna zawsze zawiera konstruktor domyślny.

Metody abstrakcyjne

Metody abstrakcyjne to te typy metod, które nie wymagają implementacji do ich deklaracji. Te metody nie mają treści, co oznacza brak implementacji. Oto kilka właściwości metody abstrakcyjnej:

  • Abstrakcyjna metoda w Javie jest deklarowana za pomocą słowa kluczowego „abstract”.
  • Podczas deklaracji metody abstrakcyjnej słowo kluczowe abstract należy umieścić przed nazwą metody.
  • W metodzie abstrakcyjnej nie ma treści, obecny jest tylko podpis metody.
  • Abstrakcyjna metoda w Javie nie ma nawiasów klamrowych, ale na końcu metody będzie średnik (;)

abstrakcyjna metoda podwójna (podwójne n1, podwójne n2);

  • Każda klasa zawierająca metodę abstrakcyjną powinna być zadeklarowana jako klasa abstrakcyjna. Chociaż może nie być odwrotnie, tzn. nie jest konieczne, aby klasa abstrakcyjna miała metodę abstrakcyjną.
  • Dziedziczenie klasy abstrakcyjnej przez klasę zwykłą wymaga implementacji wszystkich metod abstrakcyjnych w klasie nadrzędnej.

Przykład metody abstrakcyjnej

Publiczna klasa abstrakcyjna Samochód

{

prywatny model String;

prywatny kolor ciągu;

prywatny int rok;

publiczne abstrakcyjne podwójne obliczeniePrice();

}

Jeśli klasy pochodne nie implementują metod abstrakcyjnych, spowoduje to powstanie klas abstrakcyjnych, których nie można utworzyć.

Niektórych nie można używać ze słowem kluczowym abstract w Javie.

  • finał
  • abstrakcyjny tubylec
  • abstrakcyjne statyczne
  • abstrakcyjny prywatny
  • streszczenie zsynchronizowane
  • streszczenie strictfp

Poniżej pokazano kod pokazujący użycie metody abstrakcyjnej w Javie .

Źródło

Dane wyjściowe kodu to:

Interfejsy Java

Oprócz klas abstrakcyjnych i metod abstrakcyjnych, Java używa interfejsów do osiągnięcia abstrakcji. Gdy powiązane metody są zgrupowane razem w puste ciała, nazywa się to interfejsem. Interfejs jest podobny do klasy abstrakcyjnej, ponieważ jest grupowaniem metod abstrakcyjnych. Kiedy klasa implementuje interfejs, wszystkie metody abstrakcyjne w obrębie interfejsu są dziedziczone. Interfejs może również zawierać metody domyślne, stałe i metody statyczne. Obecne są tylko treści metod domyślnych i statycznych. Dziedziczenie i klasę można napisać w podobny sposób, ale klasa może opisywać atrybuty i zachowanie obiektu. Podczas gdy w przypadku interfejsu obecne są tylko te zachowania obiektu, są one implementowane przez klasę.

Klasa musi zdefiniować wszystkie metody interfejsu, który implementuje. Tylko w przypadku klasy abstrakcyjnej metody nie muszą być definiowane przez klasę.

Interfejs jest podobny do abstrakcyjnej klasy Java w następujący sposób:

  • W interfejsie może być zawarta dowolna liczba metod.
  • Rozszerzenie .java służy do zapisywania interfejsu w pliku. Nazwa pliku powinna być zgodna z nazwą interfejsu.
  • Plik .class zawiera kod bajtowy interfejsu.
  • Interfejsy pojawiają się w pakietach. Plik kodu bajtowego interfejsu znajduje się w katalogu o tej samej nazwie, co nazwa pakietu.

Interfejs różni się od abstrakcyjnej klasy Java w następujący sposób:

  • Nie można utworzyć instancji interfejsu.
  • W interfejsie nie ma konstruktorów.
  • Interfejs zawiera tylko metody abstrakcyjne.
  • W interfejsie nie ma pól instancji. Pole musi być zadeklarowane zarówno jako statyczne, jak i ostateczne, jeśli ma pojawić się w interfejsie.
  • Tylko klasa może implementować interfejs, ale nie może być rozszerzona.
  • Interfejs może rozszerzać wiele interfejsów.

Ucz się kursów oprogramowania online z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.

Właściwości interfejsu

  • Nie ma potrzeby deklarowania interfejsu jako abstrakcyjnego za pomocą słowa kluczowego abstract , ponieważ jest on niejawnie abstrakcyjny.
  • Abstrakcyjne słowa kluczowe nie są wymagane do deklarowania metod jako abstrakcyjnych, ponieważ są one niejawnie abstrakcyjne.
  • Wszystkie metody w interfejsie są niejawnie publiczne.

Jak zadeklarować interfejs?

Słowo kluczowe „interface” służy do deklarowania interfejsu. Całkowita abstrakcja jest zapewniona poprzez użycie interfejsu. Domyślnie wszystkie metody w interfejsie są abstrakcyjne i publiczne. Oznacza to, że w interfejsie nie ma żadnej metody, a wszystkie pola są statyczne, publiczne i końcowe.

Składnia interfejsu:

nazwa_interfejsu_interfejsu {

# zadeklaruj pola

# zadeklaruj metody abstrakcyjne

}

Na przykład interfejs Player

{

końcowy wiek całkowity = 40;

int oblicz();

}

Jak zaimplementować interfejs?

Do implementacji interfejsu używane jest słowo kluczowe ' implementy' . Klasa może zaimplementować więcej niż jeden interfejs. W takich przypadkach po słowie kluczowym „ implementy” następuje lista interfejsów oddzielonych przecinkiem. Słowo kluczowe jest używane w deklaracji klasy.

Przykład implementacji interfejsu pokazano poniżej:

klasa Maruti wdraża Car

Poniżej pokazano przykład kodu pokazującego implementację interfejsu w Javie.

Źródło

Kod generuje następujące dane wyjściowe:

Poniżej przedstawiono kod stosujący implementację wielu interfejsów.

Źródło

Kod generuje następujące dane wyjściowe:

Jakiś tekst…

Jakiś inny tekst…

Dlaczego używany jest interfejs?

  • Interfejsy służą do osiągnięcia całkowitej abstrakcji.
  • Dziedziczenie wielokrotne w Javie można osiągnąć za pomocą dziedziczenia, ponieważ Java nie obsługuje dziedziczenia wielokrotnego.
  • Luźne połączenie można osiągnąć poprzez zastosowanie interfejsu.
  • Dzięki zastosowaniu abstrakcji implementacji w java można osiągnąć.

Chociaż abstrakcję w Javie można osiągnąć poprzez klasę abstrakcyjną Javy, interfejsy są używane, ponieważ zawierają zmienne końcowe, publiczne i statyczne. Jednak w klasie abstrakcyjnej mogą znajdować się zmienne inne niż końcowe.

Jeśli do osiągnięcia abstrakcji używany jest zarówno interfejs Java, jak i klasa abstrakcyjna Java, kiedy należy użyć interfejsu i klasy abstrakcyjnej?

  • Klasa abstrakcyjna jest używana, gdy użytkownik musi zdefiniować szablon dla grupy podklas.
  • Interfejs jest używany, gdy użytkownik musi zdefiniować rolę dla innych klas.

Kilka zalet abstrakcji to:

  • Zmniejszono złożoność programu.
  • Istnieją mniejsze szanse na duplikację kodu zwiększającą możliwość ponownego wykorzystania.
  • Dzięki wykorzystaniu abstrakcji zwiększa się bezpieczeństwo programu, ponieważ użytkownikowi dostarczanych jest tylko kilka szczegółów.

Wniosek

W artykule omówiono szczegółową koncepcję abstrakcji w Javie, która jest techniką ukrywania przed użytkownikiem nieistotnych informacji. W Javie abstrakcję osiąga się poprzez abstrakcyjne klasy i interfejsy. Abstrakcja 100% jest dostarczana przez interfejsy, podczas gdy abstrakcja częściowa jest dostarczana przez klasy abstrakcyjne. W artykule dalej wspomniano, kiedy należy używać interfejsu, a kiedy należy użyć klasy abstrakcyjnej. Wymieniono również podobieństwa interfejsu do klasy abstrakcyjnej Java, a także różnice. Bez wymaganej znajomości obu koncepcji powstanie kod pełen wad.

Jeśli chcesz dowiedzieć się więcej i wdrażać koncepcje w rzeczywistych problemach, możesz zapoznać się z kursem Masters in Computer Science prowadzonym przez upGrad i IIIT-Bangalore , uznawany przez Liverpool John Moores University . Kurs jest przeznaczony dla początkujących specjalistów (w wieku 21-45 lat), zapewniając ponad 500 godzin szkolenia od wiodących ekspertów branżowych i wydziałów inżynierii oprogramowania. Dalsze szczegóły kursu można sprawdzić na oficjalnej stronie upGrad.

Podnieś swoje umiejętności i przygotuj się na przyszłość

Złóż wniosek o program Executive PG w zakresie rozwoju oprogramowania z IIIT-B