Co to jest klasa abstrakcyjna w Javie?

  • Klasy abstrakcyjne są jak inne normalne klasy w java. Główną różnicą między klasą abstrakcyjną a klasą normalną jest utworzenie klasy abstrakcyjnej, której musimy użyć słowa kluczowego „ABSTARCT”. Jest to separacja implementacji klas.
  • Kiedyś definiowali bardzo typowe cechy jego podklas. Taki typ klasy określa się mianem klasy abstrakcyjnej.
  • Co najważniejsze, nie możemy stworzyć obiektu klasy abstrakcyjnej.
  • Klasy abstrakcyjne mogą zawierać zarówno metody abstrakcyjne, jak i nieabstrakcyjne. Nie mogą zawierać treści metody abstrakcyjnej, która może być dostarczona tylko przez podklasę. Jeśli podklasa ta nie zapewnia implementacji metody abstrakcyjnej, musimy ją jawnie ABSTRACT.
  • Innymi słowy, jeśli klasa zawiera metodę abstrakcyjną, musi zdefiniować się jako ABSTARCT.
  • Używając klas abstrakcyjnych możemy zgrupować kilka klas java razem, to również optymalizuje kod i sprawia, że ​​kod jest bardziej czytelny i zmniejsza redundancję. Zapewnia również szablon dla przyszłych klas.

Składnia klasy abstrakcyjnej w Javie

Jak działa klasa abstrakcyjna w Javie?

  • Klasa abstrakcyjna ma metodę abstrakcyjną i metodę nieabstrakcyjną, tj. Metodę abstrakcyjną bez ciała, i mogą mieć również metody z implementacją.
  • Klasa abstrakcyjna służy do zapewnienia najbardziej powszechnej funkcji, która jest specyficzna dla różnych klas. Podklasy mogą zapewniać różne wdrożenie tych metod abstrakcyjnych w zależności od ich potrzeb lub wymagań.
  • Nie możemy stworzyć obiektu klasy abstrakcyjnej za pomocą operatora „new”, ale nadal możemy zdefiniować jego konstruktor, który można wywołać tylko w konstruktorze jego podklasy. Konstruktor podklasy może uzyskać dostęp do konstruktora nadklasy, aby zainicjować swoją zmienną, która może być używana w podklasie do dalszych wymagań.

Przykłady klasy abstrakcyjnej w Javie

Human.java

package com.cont.article;
public abstract class Human
(
public abstract void whatTheylike();
public void doTheysleep()
(
System. out .println("Yes every human require sleep.");
)
)

Human1.java

package com.cont.article;
public class Human1 extends Human
(
@Override
public void whatTheylike()
(
System. out .println("we like to have icecream.");
)
)

Human2.java

package com.cont.article;
public class Human2 extends Human
(
@Override
public void whatTheylike()
(
System. out .println("we like to have coffee.");
)
)

TestHuman.java

package com.cont.article;
public class TestHuman
(
public static void main(String() args)
(
Human human1 = new Human1();
human1.whatTheylike();
Human human2 = new Human2();
human2.whatTheylike();
human1.doTheysleep();
human2.doTheysleep();
)
)

Wynik:

W powyższym przykładzie mamy CZŁOWIEKA jako abstrakcyjną klasę, która określa wspólne potrzeby, upodobania i niechęci człowieka. Istnieją różne typy ludzi o różnych upodobaniach. Tak więc każdy człowiek może zapewnić konkretne wdrożenie tego, co lubi. Będzie to specyficzne tylko dla nich.

Główną zaletą klasy abstrakcyjnej jest to, że mamy specyficzną implementację metod zgodnie z wymaganiem, co również prowadzi do zmniejszenia nadmiarowości, zwiększa czytelność kodu, ukrywa implementację metod, a zatem zapewnia częściową abstrakcję.

Możemy mieć jeszcze jeden przykład, aby zrozumieć, kiedy powinniśmy korzystać z klas abstrakcyjnych.

  • Powinniśmy używać klasy abstrakcyjnej, gdy chcemy dzielić wspólną funkcjonalność między różnymi klasami z określoną implementacją.
  • W klasach abstrakcyjnych pola nie powinny być statyczne i końcowe, możemy też mieć konkretne metody zdefiniowane jako prywatne, publiczne i chronione.

Powiedzmy, że mamy jedną klasę zwierząt. Istnieją odmiany zwierząt, które mamy na ziemi i wszystkie one różnią się między sobą w pewnym lub większym znaczeniu. Będzie zawierać wszystkie wspólne cechy wszystkich.

Ta klasa zwierząt nie może mieć metod specyficznych dla każdego zwierzęcia. Dzięki koncepcji klasy Abstract możemy wdrożyć tę funkcjonalność bez zbędnego kodu.

Wszystkie zwierzęta mają inny rodzaj dźwięku, nawyki itp. Na przykład pies, kot, słoń i przekąska wszystkie mają inny dźwięk. W tym celu możemy mieć ogólną metodę w klasie nadrzędnej, dzięki której wszystkie inne podklasy lub klasy podrzędne mogą zapewnić swoją własną specyficzną implementację.

W klasie nadrzędnej, tj. Animal, mamy jedną ogólną abstrakcyjną metodę o nazwie ich Sound (). Dlatego każda klasa potomna musi zastąpić tę metodę i zapewnić własną, konkretną implementację.

Klasa abstrakcyjna i interfejs?

  • Klasa abstrakcyjna i interfejs są używane do uzyskania abstrakcji w Javie. Klasa abstrakcyjna zapewnia częściową abstrakcję, podczas gdy interfejs zapewnia 100% lub całkowitą abstrakcję.
  • Domyślnie zmienne w interfejsie są ostateczne. Ale klasa abstrakcyjna zawiera również zmienną niekończącą. Podobnie klasa abstrakcyjna może mieć również statyczną, niestatyczną zmienną. Ale interfejs będzie zawierał tylko zmienną końcową i statyczną.
  • Zmienne składowe klasy abstrakcyjnej mogą być prywatne, publiczne, chronione, ale domyślnie są publiczne w przypadku interfejsu.
  • Klasa abstrakcyjna może rozszerzać inną klasę Java i implementować wiele interfejsów, ale jeden interfejs może rozszerzać tylko inny interfejs. Klasa abstrakcyjna może zapewnić implementację interfejsu, ale interfejs nie może tego zrobić.
  • Używamy narzędzi i rozszerzamy słowo kluczowe, aby odpowiednio implementować i rozszerzać interfejs i klasy.
  • Metodą możemy modyfikować lub uzyskiwać dostęp do zmiennych niestatycznych i niekończących klasy abstrakcyjnej.

Wniosek

  • Klasa abstrakcyjna używana do zapewniania częściowej abstrakcji. Klasa abstrakcyjna nie może zostać utworzona za pomocą słowa kluczowego NEW.
  • Metoda abstrakcyjna nie ma ciała i zawsze kończy się średnikiem (;).
  • Klasa abstrakcyjna zawiera metody abstrakcyjne i nieabstrakcyjne.
  • Podklasa abstrakcyjnej nadklasy musi zapewnić implementację wszystkich metod abstrakcyjnych, jeśli nie zapewnia, to musi zadeklarować się jako klasa abstrakcyjna.
  • Podklasa może być abstrakcyjna, nawet jeśli nadklasa jest konkretna.
  • Klasa nieabstrakcyjna nie może zawierać metod abstrakcyjnych. Ponadto metoda abstrakcyjna jest niestatyczna.
  • Dlatego możemy powiedzieć, że klasy abstrakcyjne zawierają również metody abstrakcyjne i konkretne, więc nie mogą one zapewnić 100% abstrakcji. Jest to proces ukrywania złożonej logiki przed użytkownikiem końcowym i pokazuje mu tylko usługi. Podklasa może być abstrakcyjna, nawet jeśli jej nadklasa jest konkretna, i może być również używana jako typ danych.
  • Klasa abstrakcyjna może mieć pola statyczne i metody statyczne. Możesz użyć tych elementów statycznych z odwołaniem do klasy.

Polecane artykuły

To jest przewodnik po klasie abstrakcyjnej w Javie. Tutaj omawiamy składnię i przykłady klasy abstrakcyjnej w Javie wraz z klasą abstrakcyjną i interfejsem. Możesz także przejrzeć następujące artykuły, aby dowiedzieć się więcej -

  1. Interfejs Java a klasa abstrakcyjna
  2. BoxLayout w Javie
  3. Co to jest Java SE?
  4. Co to jest dziedziczenie Java?
  5. Jak działa klasa abstrakcyjna w PHP?
  6. Klasa abstrakcyjna w C ++
  7. Przewodnik po metodzie statycznej w PHP
  8. Pełny przegląd metody statycznej JavaScript