Co je abstraktní třída v Javě?

  • Abstraktní třídy jsou jako jakékoli jiné normální třídy v javě. Hlavním rozdílem mezi abstraktní třídou a normální třídou je vytvoření abstraktní třídy, kterou musíme použít klíčové slovo „ABSTARCT“. Jedná se o oddělení implementace třídy.
  • Oni používali definovat velmi běžné rysy jeho podtříd. Takový typ třídy se označuje jako abstraktní třída.
  • Nejdůležitější je, že nemůžeme vytvořit objekt abstraktní třídy.
  • Abstraktní třídy mohou obsahovat abstraktní i ne abstraktní metody. Nemohou obsahovat tělo abstraktní metody, kterou může poskytnout pouze podtřída. Pokud podtřída neposkytuje implementaci abstraktní metody, musíme ji explicitně uvést.
  • Jinými slovy, pokud třída obsahuje abstraktní metodu, musí se definovat jako ABSTARCT.
  • Použitím abstraktních tříd můžeme seskupit několik tříd Java, a to také optimalizuje kód a zvyšuje čitelnost kódu a snižuje redundanci. Poskytuje také šablonu pro budoucí třídy.

Syntaxe abstraktní třídy v Javě

Jak funguje abstraktní třída v Javě?

  • Abstraktní třída má abstraktní metodu a non-abstraktní metodu, tj. Abstraktní metodu bez těla a mohou mít i metody s implementací.
  • Abstraktní třída se používá k poskytnutí nejběžnější funkce specifické pro různé třídy. Podtřídy mohou poskytovat různé provedení těchto abstraktních metod podle jejich potřeb nebo požadavků.
  • Nemůžeme vytvořit objekt abstraktní třídy pomocí 'nového' operátora, ale stále můžeme definovat jeho konstruktor, který lze vyvolat pouze v konstruktoru jeho podtřídy. Konstruktor podtřídy může přistupovat k konstruktoru podtřídy k inicializaci své proměnné, která by mohla být použita v podtřídě pro další požadavek.

Příklady abstraktní třídy v Javě

Human.java

package com.cont.article;
public abstract class Human
(
public abstract void whatTheylike();
public void doTheysleep()
(
System. out .println("Yes every human require sleep.");
)
)

Human1.java

package com.cont.article;
public class Human1 extends Human
(
@Override
public void whatTheylike()
(
System. out .println("we like to have icecream.");
)
)

Human2.java

package com.cont.article;
public class Human2 extends Human
(
@Override
public void whatTheylike()
(
System. out .println("we like to have coffee.");
)
)

TestHuman.java

package com.cont.article;
public class TestHuman
(
public static void main(String() args)
(
Human human1 = new Human1();
human1.whatTheylike();
Human human2 = new Human2();
human2.whatTheylike();
human1.doTheysleep();
human2.doTheysleep();
)
)

Výstup:

Ve výše uvedeném příkladu máme HUMAN jako abstraktní třídu, která definuje společné potřeby, líbí a nelíbí člověka. Existují různé typy lidí s různými laskavostmi a oblibami. Takže každý člověk může poskytnout konkrétní implementaci toho, co má rád. To bude pro ně specifické.

Hlavní výhodou abstraktní třídy je to, že máme specifickou implementaci metod podle požadavku, který také vede ke snížení redundance, zvyšuje čitelnost kódu, skrývá implementaci metod, a tudíž poskytuje částečnou abstrakci.

Můžeme mít ještě jeden příklad, abychom pochopili, kdy bychom měli používat abstraktní třídy.

  • Měli bychom použít abstraktní třídu, když chceme sdílet společnou funkčnost mezi různými třídami se specifickou implementací.
  • V abstraktních třídách by pole nemělo být statické a konečné, můžeme také mít konkrétní metody definované jako soukromé, veřejné a chráněné.

Řekněme, že máme jednu třídu zvířat. Existují odrůdy zvířat, které máme na Zemi, a všechna se od sebe v nějakém nebo hlavním smyslu liší. Bude obsahovat všechny společné vlastnosti všech.

Nyní tato třída zvířat nemůže mít metody, které jsou specifické pro každé zvíře. Takže konceptem třídy Abstract můžeme tuto funkci implementovat bez redundantního kódu.

Všechna zvířata mají jiný typ zvuku, návyky atd. Například pes, kočka, slon a svačina mají jiný zvuk. Proto můžeme mít v nadřazené třídě obecnou metodu, pomocí které mohou všechny ostatní podtřídy nebo podřízené třídy poskytovat svou vlastní specifickou implementaci.

V rodičovské třídě, tj. Zvíře, máme jednu obecnou abstraktní metodu nazvanou jejich Zvuk (). Každá podřízená třída musí tuto metodu přepsat a poskytnout vlastní specifickou implementaci.

Abstraktní třída a rozhraní?

  • Abstraktní třída i rozhraní se používají k dosažení abstrakce v javě. Abstraktní třída poskytuje částečnou abstrakci, zatímco rozhraní poskytuje 100% nebo úplnou abstrakci.
  • Ve výchozím nastavení jsou proměnné v rozhraní konečné. Abstraktní třída však obsahuje i finální proměnnou. Podobně abstraktní třída může mít také statickou, nestatickou proměnnou. Rozhraní však bude obsahovat pouze konečnou a statickou proměnnou.
  • Členské proměnné abstraktní třídy mohou být jako soukromé, veřejné, chráněné, ale ve výchozím nastavení jsou veřejné v případě rozhraní.
  • Abstraktní třída může rozšířit další třídu Java a implementovat více rozhraní, ale jedno rozhraní může rozšířit pouze jiné rozhraní. Abstraktní třída může poskytovat implementaci rozhraní, ale rozhraní to nemůže udělat.
  • Implementujeme a rozšiřujeme klíčové slovo k implementaci a rozšíření rozhraní a tříd.
  • Prostřednictvím metody můžeme modifikovat nebo přistupovat k nestatickým a nekonečným proměnným abstraktní třídy.

Závěr

  • Abstraktní třída sloužící k zajištění částečné abstrakce. Abstraktní třídu nelze vytvořit pomocí nového klíčového slova.
  • Metoda Abstrakt nemá tělo a vždy končí středníkem (;).
  • Abstraktní třída obsahuje abstraktní a non-abstraktní metody.
  • Podtřída abstraktní nadřazené třídy, musí poskytnout implementaci veškeré abstraktní metody, pokud ji neposkytuje, musí se prohlásit za abstraktní třídu.
  • Podtřída může být abstraktní, i když je nadtřída konkrétní.
  • Třída bez abstraktů nemůže obsahovat abstraktní metody. Rovněž abstraktní metoda není statická.
  • Můžeme tedy říci, že abstraktní třídy obsahují také abstraktní a konkrétní metody, takže nemohou poskytnout 100% abstrakci. Je to proces skrytí komplexní logiky před koncovým uživatelem a ukazuje jim pouze služby. Podtřída může být abstraktní, i když její nadtřída je konkrétní a lze ji také použít jako datový typ.
  • Abstraktní třída může mít statická pole a statické metody. Tyto statické členy můžete použít s odkazem na třídu.

Doporučené články

Toto je průvodce abstraktní třídou v Javě. Zde diskutujeme syntaxi a příklady abstraktní třídy v Javě spolu s abstraktní třídou a rozhraním. Další informace naleznete také v následujících článcích -

  1. Rozhraní Java vs abstraktní třída
  2. BoxLayout v Javě
  3. Co je Java SE?
  4. Co je dědičnost Java?
  5. Jak funguje abstraktní třída v PHP?
  6. Abstraktní třída v C ++
  7. Průvodce statickou metodou v PHP
  8. Kompletní přehled statické metody JavaScriptu

Kategorie: