Rozdíl mezi dědičností a rozhraním v Javě

Klíčový rozdíl - dědičnost vs Rozhraní v Javě
 

Java je programovací jazyk vyvinutý společností Sun Microsystems. Java lze použít k vývoji různých aplikací. Jedná se o více paradigmatický jazyk, který podporuje objektově orientovaný, strukturovaný atd. Hlavní výhodou Java je, že podporuje objektově orientované programování (OOP). Programátor může vytvářet třídy a objekty. V OOP jsou čtyři sloupy. Jsou to dědičnost, polymorfismus, abstrakce a zapouzdření. Dědičnost a rozhraní souvisí s OOP. klíčový rozdíl mezi dědičností a rozhraním je to dědičnost je odvodit nové třídy z existujících tříd a rozhraní má implementovat abstraktní třídy a vícenásobnou dědičnost.

OBSAH

1. Přehled a klíčový rozdíl
2. Co je dědičnost v Javě
3. Co je rozhraní v Javě
4. Podobnosti mezi dědičností a rozhraním v Javě
5. Srovnání bok po boku - dědičnost vs. rozhraní v Javě v tabulkové formě
6. Shrnutí

Co je dědičnost v Javě?

Dědičnost může dosáhnout použitelnosti kódu. Dědičnost pomáhá znovu použít atributy a metody existující třídy. Mechanismus odvozování nové třídy pomocí staré třídy se nazývá dědičnost. Stará třída je známá jako rodičovská třída nebo super třída. Odvozená třída se nazývá podřízená třída nebo podtřída.

Syntaxe dědičnosti Java je následující.

třída subclass_name rozšiřuje superclass_name

variabilní deklarace;

deklarace metody;

Koncept dědičnosti lze vysvětlit pomocí následujícího příkladu. Předpokládejme, že existuje třída nazvaná A takto.

veřejná třída A

veřejný neplatný součet ()

System.out.println („Sum“);

Pokud chceme přidat novou metodu beze změny stávající třídy, můžeme to udělat následovně.

veřejná třída B

public void sub ()

System.out.println („Sub“);

Programátor může použít dědičnost k použití součtu třídy A ().

veřejná třída B rozšiřuje třídu A

public void sub ()

System.out.println („Sub“);

V hlavní funkci je možné pomocí dědičnosti vytvořit objekt B a zavolat sub (), který patří do třídy B a sum (), který patří do třídy A.

public static void main (String [] args)

B obj = nový B ();

obj.sub ();

obj.sum ();

Existují různé typy dědičnosti. Jsou to jediné dědictví, vícenásobné dědictví, víceúrovňové dědictví a hierarchické dědictví. v jediné dědictví, existuje jedna základní třída a jedna odvozená třída. v víceúrovňové dědictví, existují tři třídy, a to základní třída, střední třída a odvozená třída. Mezitřída zdědí od základní třídy a odvozená třída zdědí od mezitřídy. v hierarchické dědictví, existuje jedna základní třída a mnoho odvozených tříd. Existuje zvláštní typ známý jako Hybridní dědičnost. Je to kombinace dvou nebo více typů dědičnosti.

Obrázek 01: Dědičnost

v Vícenásobné dědictví existuje mnoho základních tříd a jedna odvozená třída. Předpokládejme, že třídy A a B jsou základní třídy. Třída C je odvozená třída. Pokud obě třídy A a B mají stejnou metodu a programátor tuto metodu volá z odvozené třídy, způsobí to dvojznačnost. Zdědění dvou tříd může způsobit chybu kompilace. V Javě proto není podporováno vícenásobné dědictví. K překonání tohoto problému lze použít rozhraní.

Co je rozhraní v Javě?

Abstrakce je proces skrývání podrobností implementace a zobrazování pouze funkcionality uživateli. Abstrakce lze dosáhnout pomocí abstraktní třídy nebo rozhraní. Abstraktní metoda je metoda bez implementace. Třída s alespoň jednou abstraktní metodou je abstraktní třída. Příklad abstraktní třídy je následující.

abstraktní třída A

abstraktní prázdná suma ();

Předpokládejme, že existují dvě abstraktní třídy jako A a B. Pro implementaci abstraktních metod A a B se vytvoří nová třída C. Třída C by pak měla rozšířit A i B., V Javě však není podporována vícenásobná dědičnost. Proto by měla používat rozhraní. Rozhraní lze použít k deklaraci metod, ale není možné definovat metody. Není možné vytvořit objekt pomocí rozhraní. Třída C by měla implementovat všechny metody do rozhraní A a B.

rozhraní A

neplatná suma ();

rozhraní B

neplatné sub ();

třída C implementuje A, B

veřejný neplatný součet ()

System.out.println („Summation“);

public void sub ()

System.out.println („Odčítání“);

Nyní je v hlavním programu možné vytvořit objekt C a volat obě metody.

public static void main (String [] args)

C obj = nový C ();

obj.sum ();

obj.sub ();

Rozhraní tedy lze použít k implementaci více dědičnosti.

Dalším využitím rozhraní je to, že poskytuje zabezpečení. Viz níže uvedený kód.

rozhraní A

neplatná suma ();

třída B implementuje A

veřejný neplatný součet ()

System.out.println („Summation“);

násobení veřejné neplatnosti ()

System.out.println („Násobení“);

Při vytváření objektu B je možné volat obě metody metody sum () a multiplly (). Pokud chce programátor omezit pomocí funkce násobení (), je to možné následovně.

public static void main (String [] args)

A obj = new B ();

obj.sum ();

A obj = new B (); vytvoří objekt. Je typu A a paměť je přidělena jako B. Je možné volat sum (), ale nelze provést násobek (). Toto omezení se provádí pomocí rozhraní.

Jaké jsou podobnosti mezi dědičností a rozhraním v Javě?

  • Oba koncepty se vztahují k objektově orientovanému programování
  • Oba představují vztah IS-A.

Jaký je rozdíl mezi dědičností a rozhraním v Javě?

Dědičnost vs rozhraní v Javě

Dědičnost je koncept OOP k odvození nových tříd ze stávajících tříd. Rozhraní je mechanismus v OOP k implementaci abstrakce a vícenásobné dědičnosti.
Používání
Dědičnost umožňuje opětovné použití kódu. Rozhraní poskytují abstrakci a vícenásobnou dědičnost.

Shrnutí - dědičnost vs Rozhraní v Javě

Java je multi-paradigmatický programovací jazyk, který podporuje objektově orientované programování. Dědičnost a rozhraní souvisí s objektově orientovaným programováním. Rozdíl mezi dědičností a rozhraním spočívá v tom, že dědičností je odvození nových tříd z existujících tříd a rozhraní je implementace abstraktních tříd a vícenásobné dědičnosti.

Stáhněte si v jazyce Java verzi Dědičnost verzí PDF

Můžete si stáhnout PDF verzi tohoto článku a použít ji pro účely offline podle citace. Stáhněte si PDF verzi zde Rozdíl mezi dědičností a rozhraním v Javě

Odkaz:

1.Point, Návody. „Java Inheritance.“, Tutorials Point, 31. 10. 2017. K dispozici zde 
2.Point, Návody. "Rozhraní Java." , Tutorials Point, 31. října 2017. K dispozici zde 

Obrázek se svolením:

1.'CPT-OOP-dědičnost-kola 'Pluke - vlastní práce, (public domain) přes Commons Wikimedia