Rozdíl mezi třídou a rozhraním v Javě

author
5 minutes, 12 seconds Read

Třída i rozhraní se používají k vytváření nových referenčních typů. Třída je kolekce polí a metod, které s poli pracují. Rozhraní má plně abstraktní metody, tj. metody s nikým. Rozhraní je syntakticky podobné třídě, ale mezi třídou a rozhraním je zásadní rozdíl, který spočívá v tom, že třídu lze instancovat, ale rozhraní nelze instancovat nikdy.

Poznejme tedy další rozdíly mezi třídou a rozhraním pomocí srovnávací tabulky uvedené níže.

Obsah: Třída vs. rozhraní

  1. Srovnávací graf
  2. Definice
  3. Klíčové rozdíly
  4. Závěr

Srovnávací graf

.

Podklad pro porovnání Třída Rozhraní
Základní Třída se instancuje a vytváří objekty. Rozhraní nelze nikdy instancovat, protože jeho metody nemohou při volání provádět žádnou akci.
Klíčové slovo třída rozhraní
Specifikátor přístupu Prvky třídy mohou být soukromé, veřejné nebo chráněné. Prvky rozhraní jsou vždy veřejné.
Metody Metody třídy jsou definovány tak, aby prováděly konkrétní činnost. Metody v rozhraní jsou čistě abstraktní.
Implementace/rozšíření Třída může implementovat libovolný počet rozhraní a může rozšířit pouze jednu třídu. Rozhraní může rozšířit více rozhraní, ale nemůže implementovat žádné rozhraní.
Konstruktor Třída může mít konstruktor pro inicializaci proměnných. Rozhraní nikdy nemůže mít konstruktor, protože v něm není téměř žádná proměnná, kterou by bylo třeba inicializovat.

Definice třídy

Třída je nejdůležitějším aspektem programování v Javě, bez tříd nelze realizovat javovský program. Třída vytváří referenční typy a tyto referenční typy se používají k vytváření objektů. Třída má signaturu a tělo. Signatura třídy obsahuje jméno třídy a informaci, která říká, zda třída zdědila jinou třídu. Tělo třídy obsahuje pole a metody, které s těmito poli pracují. Třída se vytváří pomocí klíčového slova class. Podívejme se, jak třídu deklarovat.

class class_name{/*fields...methods*/}

Při instanci třídy obsahuje každý vytvořený objekt kopii polí a metod s nimi. Pole a členy deklarované uvnitř třídy mohou být statické nebo nestatické. Hodnota statických členů je pro každý objekt konstantní, zatímco nestatické členy inicializuje každý objekt jinak podle svého požadavku.

Členy třídy mají specifikátory přístupu, které rozhodují o viditelnosti a přístupnosti členů pro uživatele nebo pro podtřídy. Specifikátory přístupu jsou public, private a protected. Třídu může zdědit jiná třída pomocí specifikátoru přístupu, který rozhodne o viditelnosti členů nadtřídy (zděděné třídy) v podtřídě (dědící třídě). Třída tak naplňuje koncept skrývání dat a zapouzdření v objektově orientovaném programování.

Definice rozhraní

Mezi referenční typy definované v Javě patří také rozhraní. Význam rozhraní spočívá v tom, že v Javě může třída dědit pouze jednu třídu. Aby se tomuto omezení vyhnuli, zavedli návrháři Javy pojem rozhraní. Rozhraní je syntakticky podobné třídě, ale chybí mu deklarace polí a metody uvnitř rozhraní nemají žádnou implementaci. Rozhraní se deklaruje pomocí klíčového slova interface. Podívejme se na deklaraci rozhraní.

interface interface_name {type var_name= value;type method1(parameter-list);type method2(parameter-list);..}

Rozhraní nedefinuje žádnou metodu deklarovanou uvnitř něj, protože mu chybí pole, na kterých by mohlo pracovat. Právě proto, že žádná metoda uvnitř rozhraní neprovádí žádnou činnost, nemůže být rozhraní nikdy instancováno. Pokud má rozhraní nějaký člen pole, musí být inicializován v okamžiku jejich deklarace. Rozhraní nikdy neobsahuje žádné konstruktory, protože mu chybí členové pole, které by se inicializovalo. Rozhraní tedy pouze definuje, co musí třída dělat, a ne jak to musí dělat.

Jednou vytvořené rozhraní může být implementováno libovolným počtem tříd pomocí klíčového slova implements. Třídy implementující rozhraní však musí definovat všechny metody uvnitř rozhraní. Rozhraní může také dědit jiné rozhraní pomocí klíčového slova extend. Pokud třída implementuje rozhraní, které rozšiřuje jiné rozhraní. Pak musí třída definovat metody obou rozhraní vyskytujících se v řetězci. Metody uvnitř rozhraní musí být vždy veřejné, protože k nim musí mít přístup třídy, které je implementují.

Klíčové rozdíly mezi třídou a rozhraním v Javě

  1. Třídu lze instancovat vytvořením jejích objektů. Rozhraní se nikdy neinstancuje, protože metody deklarované uvnitř rozhraní jsou abstraktní a neprovádějí žádnou akci, takže nemá smysl žádné rozhraní instancovat.
  2. Třída se deklaruje pomocí klíčového slova class. Stejně tak se rozhraní vytváří pomocí klíčového slova interface.
  3. Členové třídy mohou mít specifikátor přístupu jako public, private, protected. Ale členy rozhraní jsou vždy veřejné, protože k nim musí mít přístup třídy, které je implementují.
  4. Metody uvnitř třídy jsou definovány tak, aby prováděly akci na polích deklarovaných ve třídě. Protože rozhraní postrádá deklaraci polí, jsou metody uvnitř rozhraní čistě abstraktní.
  5. Třída může implementovat libovolný počet rozhraní, ale může rozšířit pouze jednu nadtřídu. Rozhraní může rozšiřovat libovolný počet rozhraní, ale nemůže implementovat žádné rozhraní.
  6. Třída má uvnitř sebe definované konstruktory, které slouží k inicializaci proměnné. Rozhraní však nemá žádné konstruktory, protože nemá žádná pole, která by bylo třeba inicializovat. Pole rozhraní se inicializují pouze v okamžiku jejich deklarace.

Závěr

Obě třídy i rozhraní mají svůj význam. Třída se používá tehdy, když potřebujeme definovat, jakým způsobem bude úloha provedena. Rozhraní se používá, když potřebujeme vědět, jaká úloha má být provedena.

.

Similar Posts

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.