Różnica między dziedziczeniem a interfejsem w Javie

Spisu treści:

Różnica między dziedziczeniem a interfejsem w Javie
Różnica między dziedziczeniem a interfejsem w Javie

Wideo: Różnica między dziedziczeniem a interfejsem w Javie

Wideo: Różnica między dziedziczeniem a interfejsem w Javie
Wideo: Inheritance vs Interfaces in C#: Object Oriented Programming 2024, Grudzień
Anonim

Kluczowa różnica – dziedziczenie a interfejs w Javie

Java to język programowania opracowany przez Sun Microsystems. Java może być używana do tworzenia różnych aplikacji. Jest to język wieloparadygmatyczny, który obsługuje zorientowane obiektowo, ustrukturyzowane itp. Główną zaletą Javy jest to, że obsługuje programowanie zorientowane obiektowo (OOP). Programista może tworzyć klasy i obiekty. W OOP istnieją cztery filary. Są to dziedziczenie, polimorfizm, abstrakcja i enkapsulacja. Dziedziczenie i interfejsy są związane z obiektami obiektowymi. Kluczową różnicą między dziedziczeniem a interfejsem jest to, że dziedziczenie polega na wyprowadzaniu nowych klas z istniejących klas, a interfejs polega na implementacji klas abstrakcyjnych i dziedziczeniu wielokrotnym.

Co to jest dziedziczenie w Javie?

Dziedziczenie może zapewnić możliwość ponownego wykorzystania kodu. Dziedziczenie pomaga ponownie wykorzystać atrybuty i metody istniejącej klasy. Mechanizm wyprowadzania nowej klasy przy użyciu starej klasy nazywa się dziedziczeniem. Stara klasa jest znana jako klasa nadrzędna lub superklasa. Klasa pochodna nazywana jest klasą potomną lub podklasą.

Składnia dziedziczenia Java jest następująca.

class subclass_name rozszerza superclass_name {

deklaracja zmiennej;

deklaracja metody;

}

Koncepcję dziedziczenia można wyjaśnić na poniższym przykładzie. Załóżmy, że istnieje klasa o nazwie A w następujący sposób.

public class A{

public void sum(){

System.out.println(„Suma”);

}

}

Jeśli chcemy dodać nową metodę bez zmiany istniejącej klasy, możemy to zrobić w następujący sposób.

klasa publiczna B{

public void sub(){

System.out.println(„Sub”);

}

}

Programista może użyć dziedziczenia, aby użyć klasy A sum().

public class B rozszerza klasę A{

public void sub(){

System.out.println(„Sub”);

}

}

W głównej funkcji możliwe jest utworzenie obiektu B i wywołanie funkcji sub(), która należy do klasy B i sum(), która należy do klasy A przy użyciu dziedziczenia.

public static void main(String args){

B obj=nowy B();

obj.sub();

obj.sum();

}

Istnieją różne rodzaje dziedziczenia. Są to dziedziczenie pojedyncze, wielokrotne, wielopoziomowe i hierarchiczne. W pojedynczym dziedziczeniu istnieje jedna klasa bazowa i jedna klasa pochodna. W dziedziczeniu wielopoziomowym istnieją trzy klasy, a mianowicie klasa podstawowa, klasa pośrednia i klasa pochodna. Klasa pośrednia dziedziczy po klasie bazowej, a klasa pochodna dziedziczy po klasie pośredniej. W dziedziczeniu hierarchicznym istnieje jedna klasa bazowa i wiele klas pochodnych. Istnieje specjalny typ zwany dziedziczeniem hybrydowym. Jest to połączenie dwóch lub więcej rodzajów dziedziczenia.

Różnica między dziedziczeniem a interfejsem w Javie
Różnica między dziedziczeniem a interfejsem w Javie

Rysunek 01: Dziedziczenie

W Dziedziczeniu wielokrotnym istnieje wiele klas bazowych i jedna klasa pochodna. Załóżmy, że klasy A i B są klasami bazowymi. Klasa C jest klasą pochodną. Jeśli obie klasy A i B mają tę samą metodę, a programista wywoła tę metodę z klasy pochodnej, spowoduje to problem niejednoznaczności. Dziedziczenie dwóch klas może spowodować błąd w czasie kompilacji. Dlatego dziedziczenie wielokrotne nie jest obsługiwane w Javie. Do rozwiązania tego problemu można użyć interfejsu.

Co to jest interfejs w Javie?

Abstrakcja to proces ukrywania szczegółów implementacji i wyświetlania użytkownikowi tylko funkcjonalności. Abstrakcję można osiągnąć za pomocą klas abstrakcyjnych lub interfejsów. Metoda abstrakcyjna to metoda bez implementacji. Klasa z co najmniej jedną metodą abstrakcyjną jest klasą abstrakcyjną. Przykład klasy abstrakcyjnej jest następujący.

klasa abstrakcyjna A{

abstract void sum();

}

Załóżmy, że istnieją dwie klasy abstrakcyjne jako A i B. Aby zaimplementować metody abstrakcyjne A i B, tworzona jest nowa klasa C. Wtedy klasa C powinna rozszerzać zarówno A, jak i B., ale dziedziczenie wielokrotne nie jest obsługiwane w Javie. Dlatego należy używać interfejsów. Interfejsy mogą być używane do deklarowania metod, ale nie ma możliwości definiowania metod. Nie ma możliwości stworzenia obiektu za pomocą interfejsów. Klasa C powinna implementować wszystkie metody w interfejsach A i B.

interfejs A{

nieważna suma();

}

interfejs B{

void sub();

}

klasa C implementuje A, B{

public void sum(){

System.out.println(„Podsumowanie”);

}

public void sub(){

System.out.println(„Odejmowanie”);

}

}

Teraz w głównym programie można utworzyć obiekt w C i wywołać obie metody.

public static void main (String args) {

C obj=nowy C();

obj.sum();

obj.sub();

}

Tak więc interfejsy mogą być używane do implementacji dziedziczenia wielokrotnego.

Innym zastosowaniem interfejsów jest zapewnienie bezpieczeństwa. Zapoznaj się z poniższym kodem.

interfejs A {

unieważniona suma ();

}

klasa B implementuje A {

public void sum () {

System.out.println(„Podsumowanie”);

}

public void mnożyć () {

System.out.println(„Mnożenie”);

}

}

Podczas tworzenia obiektu B, możliwe jest wywołanie obu metod sum () i mnożenia (). Jeśli programista chce ograniczyć użycie funkcji mnożenia (), jest to możliwe w następujący sposób.

public static void main(String args){

A obj=nowy B();

obj.sum();

}

A obj=nowy B(); stworzy obiekt. Jest typu A, a pamięć jest alokowana jako B. Możliwe jest wywołanie sum(), ale nie można wykonać multiply(). To ograniczenie odbywa się za pomocą interfejsów.

Jakie są podobieństwa między dziedziczeniem a interfejsem w Javie?

  • Obie koncepcje są związane z programowaniem obiektowym
  • Oba reprezentują relację IS-A.

Jaka jest różnica między dziedziczeniem a interfejsem w Javie?

Dziedziczenie a interfejs w Javie

Dziedziczenie to koncepcja OOP mająca na celu wyprowadzenie nowych klas z istniejących klas. Interfejs to mechanizm w OOP do implementacji abstrakcji i wielokrotnego dziedziczenia.
Zastosowanie
Dziedziczenie zapewnia możliwość ponownego wykorzystania kodu. Interfejsy zapewniają abstrakcję i wielokrotne dziedziczenie.

Podsumowanie – Dziedziczenie a interfejs w Javie

Java to wieloparadygmatyczny język programowania, który obsługuje programowanie obiektowe. Dziedziczenie i interfejsy są związane z programowaniem obiektowym. Różnica między dziedziczeniem a interfejsem polega na tym, że dziedziczenie polega na wyprowadzaniu nowych klas z istniejących klas, a interfejsy na implementacji klas abstrakcyjnych i dziedziczeniu wielokrotnym.

Pobierz wersję PDF dziedziczenia a interfejs w Javie

Możesz pobrać wersję PDF tego artykułu i używać jej do celów offline zgodnie z notatką cytowania. Proszę pobrać wersję PDF tutaj Różnica między dziedziczeniem a interfejsem w Java

Zalecana: