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

Obsah:

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

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

Video: Rozdíl mezi dědičností a rozhraním v Javě
Video: Inheritance vs Interfaces in C#: Object Oriented Programming 2024, Červenec
Anonim

Klíčový rozdíl – dědičnost vs rozhraní v Javě

Java je programovací jazyk vyvinutý společností Sun Microsystems. Java může být použita k vývoji různých aplikací. Je to multiparadigmatický jazyk, který podporuje objektově orientované, strukturované atd. Hlavní výhodou Javy je, že podporuje objektově orientované programování (OOP). Programátor může vytvářet třídy a objekty. V OOP jsou čtyři pilíře. 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 v tom, že dědičnost má odvozovat nové třídy z existujících tříd a rozhraní má implementovat abstraktní třídy a vícenásobnou dědičnost.

Co je dědičnost v Javě?

Dědičnost může dosáhnout opětovné použitelnosti kódu. Dědičnost pomáhá znovu použít atributy a metody existující třídy. Mechanismus odvození nové třídy pomocí staré třídy se nazývá dědičnost. Stará třída je známá jako nadřazená třída nebo supertřída. Odvozená třída se nazývá podtřída nebo podtřída.

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

class subclass_name rozšiřuje superclass_name {

deklarace proměnné;

deklarace metody;

}

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

veřejná třída A{

public void sum(){

System.out.println(“Součet”);

}

}

Pokud chceme přidat novou metodu beze změny existují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í třídy A sum().

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

public void sub(){

System.out.println(“Sub”);

}

}

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

public static void main(String args){

B obj=new B();

obj.sub();

obj.sum();

}

Existují různé typy dědičnosti. Jsou to jednoduchá dědičnost, vícenásobná dědičnost, víceúrovňová dědičnost a hierarchická dědičnost. V jediné dědičnosti existuje jedna základní třída a jedna odvozená třída. Ve víceúrovňovém dědění existují tři třídy, a to základní třída, střední třída a odvozená třída. Mezitřída dědí ze základní třídy a odvozená třída dědí z mezitřídy. V hierarchickém dědění existuje jedna základní třída a mnoho odvozených tříd. Existuje speciální typ známý jako hybridní dědičnost. Jedná se o kombinaci dvou nebo více typů dědičnosti.

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

Obrázek 01: Dědičnost

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

Co je rozhraní v Javě?

Abstrakce je proces skrytí detailů implementace a zobrazení pouze funkcí pro uživatele. Abstrakce lze dosáhnout pomocí abstraktních tříd 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{

abstract void sum();

}

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. Pak by třída C měla rozšířit jak A, tak B., Ale vícenásobná dědičnost není v Javě podporována. Proto byste měli používat rozhraní. K deklaraci metod lze použít rozhraní, ale není možné metody definovat. Není možné vytvořit objekt pomocí rozhraní. Třída C by měla implementovat všechny metody v rozhraní A a B.

rozhraní A{

void sum();

}

rozhraní B{

void sub();

}

nářadí třídy C A, B{

public void sum(){

System.out.println(“Souhrn”);

}

public void sub(){

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

}

}

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

public static void main (řetězec args) {

C obj=new C();

obj.sum();

obj.sub();

}

Rozhraní lze tedy použít k implementaci vícenásobné dědičnosti.

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

rozhraní A {

void sum ();

}

nářadí třídy B A {

veřejná neplatná částka () {

System.out.println(“Souhrn”);

}

public void násobte () {

System.out.println(“Multiplikace”);

}

}

Při vytváření objektu B je možné volat obě metody sum () a multiply (). Pokud chce programátor omezit použití funkce multiply (), 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 multiply(). Toto omezení se provádí pomocí rozhraní.

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

  • Oba koncepty souvisejí s objektově orientovaným programováním
  • 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žití
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 multiparadigmatický 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 je v tom, že dědičnost znamená odvozovat nové třídy z existujících tříd a rozhraní znamená implementovat abstraktní třídy a vícenásobnou dědičnost.

Stáhněte si PDF verzi dědičnosti vs rozhraní v Javě

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

Doporučuje: