Jaka jest różnica między klasą abstrakcyjną a interfejsem w Javie

Jaka jest różnica między klasą abstrakcyjną a interfejsem w Javie

Java zapewnia wiele sposobów zapewnienia abstrakcji danych, takich jak interfejsy Java i klasy abstrakcyjne Java. Zarówno interfejs, jak i klasa abstrakcyjna zapewniają bezpieczeństwo poprzez ukrywanie wewnętrznych szczegółów implementacji i tylko pokazując/podkreślając niezbędne szczegóły. Istnieje jednak wiele podobieństw i rozróżnień między klasami abstrakcyjnymi i interfejsami.

Ten post pomoże ci w poniżej listy aspektów interfejsów Java i zajęć abstrakcyjnych:

  1. Co to jest interfejs Java.
  2. Co to jest klasa abstrakcyjna Java.
  3. Porównanie oparte na podobieństwach.
  4. Interfejs Java Streszczenie vs Java.

Więc zacznijmy!

Co to jest interfejs Java

Jest to szablon dla klasy, która zawiera niektóre abstrakcyjne metody i zmienne statyczne/końcowe. W Javie interfejsy zapewniają jedynie deklara.

Co to jest klasa abstrakcyjna Java

Każda klasa Java, która ma co najmniej jedną metodę abstrakcyjną (tylko metodę), jest znana jako klasa abstrakcyjna w Javie.

Porównanie oparte na podobieństwach

Niektóre ważne aspekty interfejsów Java i klasy abstrakcyjne wymieniono poniżej:

  • W Javie nie możemy utworzyć obiektu/instancji obu interfejsów lub klas abstrakcyjnych.
  • Oba podają użytkownikowi niezbędne szczegóły.
  • Oba zapewniają abstrakcję.
  • Oba mogą mieć abstrakcyjne metody/funkcje.
  • Oba ukrywają informacje/szczegóły implementacji od użytkowników.

Interfejs Java Streszczenie vs Java

Słowa kluczowe „Streszczenie” i „Interfejs” są używane w Javie do tworzenia/deklarowania odpowiednio klas abstrakcyjnych i interfejsów.

W interfejsach wszyscy członkowie są domyślnie uważani za publicznych, więc nie ma potrzeby określania modyfikatora dostępu dla członków interfejsów. Podczas gdy w klasach abstrakcyjnych nie ma takiego ograniczenia, a zatem jakikolwiek modyfikator dostępu może być używany dla członków klas abstrakcyjnych, takich jak publiczne, chronione itp.

Podstawowa składnia klasy abstrakcyjnej i interfejsu pokazano na fragmentach poniżej

Klasa abstrakcyjna

public Streszczenie klas klas
Public Abstract Void MethodName ();

Interfejs

Interfacename interfejsu publicznego
void MethodName ();

Interfejsy muszą mieć wszystkie metody abstrakcyjne, podczas gdy klasy abstrakcyjne mogą mieć zarówno metody abstrakcyjne, jak i nie-abstrakcyjne.

Interfejs może mieć tylko statyczne elementy, podczas gdy klasy abstrakcyjne mogą mieć członków statycznych i niestatycznych.

Interfejsy mają tylko członków „ostatecznych” (niezmiennych), podczas gdy klasy abstrakcyjne mogą mieć członków końcowych i nieograniczających.

Interfejsy nie mają żadnego konstruktora, podczas gdy klasy abstrakcyjne mają zdefiniowane przez użytkownika lub domyślne konstruktory.

Wielokrotne dziedziczenie można osiągnąć za pomocą interfejsów, podczas gdy klasy abstrakcyjne nie obsługują wielu dziedziczeń.

W Javie klasa abstrakcyjna może odziedziczyć inną klasę i może zaimplementować wiele interfejsów, z drugiej strony interfejs Java może przedłużyć tylko inny interfejs.

Przykład

Poniższy przykład dany pozwoli ci zrozumieć, jak działają interfejsy i klasy abstrakcyjne w Javie:

interfejs Firstinterface
void MethodOne ();
void MethodWo ();
void metodhree ();

Streszczenie klasy Streszczenie Klasy implementuje Firstinterface
public void metodhree ()
System.na zewnątrz.println („metoda wdrażania klasy abstrakcyjnej”);


klasa normalna klasa rozszerza abstrakcyjną klasę
Public void MethodOne ()
System.na zewnątrz.println („Metoda implementowania”);

public void MethodWo ()
System.na zewnątrz.println („Implementing MethodWo”);

public void metodhree ()
System.na zewnątrz.println („Wdrożenie MethodThree”);


interfejs klasy publicznej
public static void main (string [] args)
Firstinterface obj = new ClassThree ();
obj.MethodOne ();
obj.MethodWo ();
obj.MethodThree ();

W tym przykładzie utworzyliśmy interfejs „Firstinterface”, klasa abstrakcyjna „Streszczenie”, i dwie kolejne normalne klasy Java i wykonały następujące funkcje:

  • Firstinterface zawiera trzy abstrakcyjne metody.
  • Streszczenie przybory Firstinterface i zastępuje MethodThree ().
  • Klasa normalna rozszerza Streszczenie i zastępuje metoda () I MethodWo () z Firstinterface.

Interfejs jest główną klasą, z której stworzyliśmy główną metodę i powołaliśmy się na wszystkie metody Firstinterface:

Wyjście zweryfikowało działanie wyżej podarowanego programu Java.

Wniosek

W Javie abstrakcja można osiągnąć za pomocą klas abstrakcyjnych i interfejsów, a oba nie mogą być utworzone. Istnieje jednak wiele rozróżnień między klasami abstrakcyjnymi i interfejsami. Na przykład interfejsy muszą mieć wszystkie metody abstrakcyjne, podczas gdy klasy abstrakcyjne mogą mieć metody abstrakcyjne i nie-abstrakcyjne; Korzystając z interfejsów, można osiągnąć wielokrotne dziedziczenie, podczas gdy klasy abstrakcyjne nie obsługują wielu dziedziczeń itp. W tym poście wyjaśniono różne aspekty klas abstrakcyjnych i interfejsów za pomocą odpowiednich przykładów.