Kluczowa różnica - dziedziczenie a interfejs w Javie
Java to język programowania opracowany przez firmę Sun Microsystems. Java może być używana do tworzenia różnych aplikacji. Jest to język z wieloma paradygmatami, który obsługuje zorientowanie obiektowe, strukturę itp. Główną zaletą Javy jest to, że obsługuje programowanie zorientowane obiektowo (OOP). Programista może tworzyć klasy i obiekty. OOP ma cztery filary. Są to dziedziczenie, polimorfizm, abstrakcja i hermetyzacja. Dziedziczenie i interfejsy są związane z OOP. 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.
ZAWARTOŚĆ
1. Przegląd i kluczowe różnice
2. Co to jest dziedziczenie w Javie
3. Co to jest interfejs w Javie
4. Podobieństwa między dziedziczeniem a interfejsem w Javie
5. Bezpośrednie porównanie - dziedziczenie a interfejs w Javie w formie tabelarycznej
6. Podsumowanie
Co to jest dziedziczenie w Javie?
Dziedziczenie może pomóc w ponownej użyteczności kodu. Dziedziczenie pomaga w ponownym użyciu atrybutów i metod 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ą podrzędną 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.
klasa publiczna 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ć sumy () klasy A.
klasa publiczna B rozszerza klasę A {
public void sub () {
System.out.println („Sub”);
}
}
W funkcji głównej możliwe jest utworzenie obiektu B i wywołanie sub (), który należy do klasy B oraz sum (), który 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, dziedziczenie wielokrotne, dziedziczenie wielopoziomowe i dziedziczenie hierarchiczne. W dziedziczeniu pojedynczym 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 znany jako dziedziczenie hybrydowe. Jest to połączenie dwóch lub więcej rodzajów dziedziczenia.
Rysunek 01: Dziedziczenie
W przypadku dziedziczenia wielokrotnego 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ę i 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 języku Java. 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 samych 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.
abstract class 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. Następnie 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ą służyć do deklarowania metod, ale nie można ich definiować. Nie ma możliwości stworzenia obiektu za pomocą interfejsów. Klasa C powinna implementować wszystkie metody w interfejsach A i B.
interfejs A {
void sum ();
}
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 programie głównym możliwe jest utworzenie obiektu C i wywołanie obu metod.
public static void main (String args) {
C obj = new C ();
obj.sum ();
obj.sub ();
}
Tak więc interfejsy mogą służyć do implementacji wielokrotnego dziedziczenia.
Innym zastosowaniem interfejsów jest zapewnienie bezpieczeństwa. Zapoznaj się z poniższym kodem.
interfejs A {
void sum ();
}
klasa B implementuje A {
public void sum () {
System.out.println („Podsumowanie”);
}
public void multiply () {
System.out.println („Mnożenie”);
}
}
Podczas tworzenia obiektu B można wywołać obie metody sum () i multiply (). Jeśli programista chce ograniczyć użycie funkcji multiply (), jest to możliwe w następujący sposób.
public static void main (String args) {
A obj = new B ();
obj.sum ();
}
A obj = new B (); stworzy obiekt. Jest to typ A, a pamięć jest przydzielana jako B. Możliwe jest wywołanie sum (), ale nie można wykonać funkcji multiply (). To ograniczenie jest realizowane za pomocą interfejsów.
Jakie są podobieństwa między dziedziczeniem a interfejsem w Javie?
- Obie koncepcje są związane z programowaniem obiektowym
- Obie reprezentują relację IS-A.
Jaka jest różnica między dziedziczeniem a interfejsem w Javie?
Porównaj środek artykułu przed tabelą
Dziedziczenie a interfejs w Javie |
|
Dziedziczenie to koncepcja OOP polegająca na wyprowadzaniu nowych klas z istniejących klas. | Interfejs jest mechanizmem w OOP do implementacji abstrakcji i wielokrotnego dziedziczenia. |
Stosowanie | |
Dziedziczenie zapewnia możliwość ponownego wykorzystania kodu. | Interfejsy zapewniają abstrakcję i wielokrotne dziedziczenie. |
Podsumowanie - Dziedziczenie a interfejs w Javie
Java to wielo-paradygmatyczny 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 polega na implementowaniu klas abstrakcyjnych i dziedziczeniu wielokrotnym.
Pobierz wersję PDF Inheritance vs Interface in Java
Możesz pobrać wersję PDF tego artykułu i używać jej w trybie offline, zgodnie z notą cytowania. Proszę pobrać wersję PDF tutaj Różnica między dziedziczeniem a interfejsem w Javie