Kľúčový rozdiel - dedičnosť vs rozhranie v Jave
Java je programovací jazyk vyvinutý spoločnosťou Sun Microsystems. Java sa dá použiť na vývoj rôznych aplikácií. Je to jazyk viacerých paradigiem, ktorý podporuje objektovo-orientované, štruktúrované atď. Hlavnou výhodou Javy je, že podporuje objektovo orientované programovanie (OOP). Programátor môže vytvárať triedy a objekty. V OOP sú štyri stĺpy. Sú to dedičstvo, polymorfizmus, abstrakcia a zapuzdrenie. Dedičstvo a rozhrania súvisia s OOP. Kľúčovým rozdielom medzi dedičstvom a rozhraním je, že dedičstvom je odvodenie nových tried z existujúcich tried a rozhraním je implementácia abstraktných tried a viacnásobného dedičstva.
OBSAH
1. Prehľad a kľúčový rozdiel
2. Čo je to dedičnosť v Jave
3. Čo je rozhranie v Jave
4. Podobnosti medzi dedičnosťou a rozhraním v Jave
5. Porovnanie vedľa seba - dedičnosť vs rozhranie v Jave v tabuľkovej podobe
6. Zhrnutie
Čo je dedenie v prostredí Java?
Dedičnosťou sa dá dosiahnuť opätovná použiteľnosť kódu. Dedenie pomáha opakovane používať atribúty a metódy existujúcej triedy. Mechanizmus odvodenia novej triedy pomocou starej triedy sa nazýva dedičnosť. Stará trieda je známa ako rodičovská trieda alebo super trieda. Odvodená trieda sa nazýva podradená trieda alebo podtrieda.
Syntax dedičnosti Java je nasledovná.
trieda subclass_name rozširuje superclass_name {
deklarácia premennej;
deklarácia metódy;
}
Koncept dedičstva možno vysvetliť na nasledujúcom príklade. Predpokladajme, že existuje trieda s názvom A nasledovne.
verejná trieda A {
verejná neplatná suma () {
System.out.println („súčet“);
}
}
Ak chceme pridať novú metódu bez zmeny existujúcej triedy, môžeme to urobiť nasledovne.
verejná trieda B {
public void sub () {
System.out.println („Sub“);
}
}
Programátor môže na použitie súčtu (A) triedy A použiť dedičstvo.
verejná trieda B rozširuje triedu A {
public void sub () {
System.out.println („Sub“);
}
}
V hlavnej funkcii je možné pomocou dedičnosti vytvoriť objekt B a zavolať sub (), ktoré patrí do triedy B a sum (), ktoré patrí do triedy A.
public static void main (String args) {
B obj = nový B ();
obj.sub ();
obj.sum ();
}
Existujú rôzne druhy dedičstva. Sú to jednoduché dedičstvo, viacnásobné dedičstvo, viacúrovňové dedičstvo a hierarchické dedičstvo. V jednoduchom dedičstve existuje jedna základná trieda a jedna odvodená trieda. Vo viacúrovňovom dedičstve existujú tri triedy, a to základná trieda, stredná trieda a odvodená trieda. Stredná trieda dedí zo základnej triedy a odvodená trieda dedí zo strednej triedy. V hierarchickom dedičstve existuje jedna základná trieda a veľa odvodených tried. Existuje špeciálny typ známy ako hybridné dedičstvo. Ide o kombináciu dvoch alebo viacerých druhov dedičstva.
Obrázok 01: Dedenie
Vo Viacnásobnom dedičstve existuje veľa základných tried a jedna odvodená trieda. Predpokladajme, že triedy A a B sú základné triedy. Trieda C je odvodená trieda. Ak majú obidve triedy A aj B rovnakú metódu a programátor túto metódu zavolá z odvodenej triedy, spôsobí to problém s nejednoznačnosťou. Dedenie dvoch tried môže spôsobiť chybu pri kompilácii. Viacnásobné dedičstvo preto nie je v Jave podporované. Na prekonanie tohto problému možno použiť rozhranie.
Čo je to rozhranie v Jave?
Abstrakcia je proces skrývania podrobností implementácie a zobrazovania iba funkcií používateľovi. Abstrakciu je možné dosiahnuť pomocou abstraktných tried alebo rozhraní. Abstraktná metóda je metóda bez implementácie. Trieda s aspoň jednou abstraktnou metódou je abstraktná trieda. Príklad abstraktnej triedy je nasledovný.
abstraktná trieda A {
abstraktná neplatná suma ();
}
Predpokladajme, že existujú dve abstraktné triedy ako A a B. Na implementáciu abstraktných metód A a B je vytvorená nová trieda C. Potom by trieda C mala rozšíriť A aj B. Ale viacnásobné dedičstvo nie je v Jave podporované. Preto by mali používať rozhrania. Na deklaráciu metód možno použiť rozhrania, nie je však možné definovať metódy. Nie je možné vytvoriť objekt pomocou rozhraní. Trieda C by mala implementovať všetky metódy v rozhraní A a B.
rozhranie A {
neplatná suma ();
}
rozhranie B {
void sub ();
}
trieda C implementuje A, B {
verejná neplatná suma () {
System.out.println („súčet“);
}
public void sub () {
System.out.println („Odčítanie“);
}
}
Teraz je v hlavnom programe možné vytvoriť objekt C a zavolať obe metódy.
public static void main (String args) {
C obj = nový C ();
obj.sum ();
obj.sub ();
}
Rozhrania teda môžu slúžiť na implementáciu viacnásobného dedičstva.
Ďalším využitím rozhraní je, že poskytuje bezpečnosť. Pozrite si nižšie uvedený kód.
rozhranie A {
neplatná suma ();
}
trieda B implementuje A {
verejná neplatná suma () {
System.out.println („súčet“);
}
verejné neplatné násobenie () {
System.out.println („Násobenie“);
}
}
Pri vytváraní objektu B je možné volať obe metódy sum () a multiplikovať (). Ak chce programátor obmedziť použitie funkcie multiply (), je možné nasledovne.
public static void main (String args) {
A obj = nový B ();
obj.sum ();
}
A obj = nový B (); vytvorí objekt. Je typu A a pamäť je pridelená ako B. Je možné volať sum (), ale nie je možné vykonať multiplikáciu (). Toto obmedzenie sa vykonáva pomocou rozhraní.
Aké sú podobnosti medzi dedičnosťou a rozhraním v Jave?
- Oba koncepty súvisia s objektovo orientovaným programovaním
- Oba predstavujú vzťah IS-A.
Aký je rozdiel medzi dedičnosťou a rozhraním v Jave?
Rozdielny článok v strede pred tabuľkou
Dedičnosť vs rozhranie v Jave |
|
Dedenie je koncept OOP na odvodenie nových tried z existujúcich tried. | Rozhranie je mechanizmus v OOP na implementáciu abstrakcie a viacnásobnej dedičnosti. |
Využitie | |
Dedičstvo poskytuje opätovné použitie kódu. | Rozhrania poskytujú abstrakciu a viacnásobné dedičstvo. |
Zhrnutie - Dedičnosť vs rozhranie v Jave
Java je programový jazyk s viacerými paradigmami, ktorý podporuje objektovo orientované programovanie. Dedičstvo a rozhrania súvisia s objektovo orientovaným programovaním. Rozdiel medzi dedičstvom a rozhraním je v tom, že dedičstvom je odvodenie nových tried z existujúcich tried a rozhraní v implementácii abstraktných tried a viacnásobného dedičstva.
Stiahnite si verziu Java Dedičnosť vs rozhranie v jazyku Java
Môžete si stiahnuť verziu tohto článku vo formáte PDF a použiť ho na offline účely podľa citačnej poznámky. Stiahnite si tu PDF verziu. Rozdiel medzi dedičstvom a rozhraním v Jave