/ / Prvky objektového modelu jazyka Java: abstraktná trieda, rozhranie

Prvky objektového modelu jazyka Java: abstraktná trieda, rozhranie

Hlavná myšlienka abstraktnej triedy spočíva v nasledujúcej téme: niekedy sa nevyžadujú hotové triedy, ale v "surovej" forme. Takéto prázdne miesta sa nedajú priamo použiť (inštancia).

java abstraktná trieda

Čo je to abstraktná trieda v jazyku Java?

Zvážte ďalší príklad. V balíčku Java.util sa nachádza abstraktná trieda Kalendár v jazyku Java. Nepoužíva konkrétny kalendár, ktorý sa používa napríklad v západnej a východnej Európe, Číne, Severnej Kórei, Thajsku atď. Má však mnoho užitočných funkcií, napríklad pridanie niekoľkých dní k určitému dátumu: tieto funkcie sú potrebné pre akékoľvek implementácia kalendára. Nemôžete vytvoriť inštanciu z abstraktnej triedy.

Abstraktné triedy, abstraktné Java metódy

Povedzme, že musíte vyvinúť nejakú grafikuprvky, napríklad geometrické tvary: kruh, obdĺžnik, hviezda atď. A tam je kontajner, ktorý ich nakreslí. Každá zložka má iný vzhľad, takže zodpovedajúca metóda (nech sa nazýva farba) sa implementuje inak. Avšak každá zložka má mnoho spoločných znakov: čísla musia byť napísané v obdĺžniku, môžu mať farbu, byť viditeľné a neviditeľné atď. To znamená, že musíte vytvoriť rodičovskú triedu pre všetky tieto čísla, kde každá zložka zdedí spoločné vlastnosti.

abstraktné triedy java abstraktné metódy
Ale čo spôsob farby? Koniec koncov, materská trieda nemá vizuálnu prezentáciu. Ak deklarujete metódu farby v každej triede nezávisle, budete musieť analyzovať, ktorá zložka sa spracováva, a potom vykonať odliatok typu. Preto musí byť metóda deklarovaná abstraktne v materskej triede: nastavte hlavičku metódy bez tela. A každá odvodená trieda bude popísať svoje vlastné telo. V systéme Java môže abstraktná trieda obklopovať abstraktné metódy.

Ak má trieda abstraktné metódy, potomtrieda je abstraktná. Triedu slov predchádza abstraktné kľúčové slovo a tiež v hlavičke metódy. Po hlavičke tejto metódy musíte umiestniť bodkočiarkou. V Java, abstraktná trieda nemôže spúšťať inštancie. Ak chceme zakázať ich vytvorenie, aj keď trieda nemá abstraktné metódy, potom môže byť trieda vyhlásená za abstraktnú. Ale ak má trieda aspoň jednu abstraktnú metódu, potom musí byť trieda abstraktná. Je nemožné, aby bola trieda abstraktná a konečná, ako aj metóda. Metóda nemôže byť abstraktná, súkromná, statická, domorodá. Aby triedy dedičov mohli byť vyhlásené za neabstraktné a mali by ich konkretizovať, musia implementovať všetky abstraktné metódy rodiča. Samotná trieda môže využívať svoje abstraktné metódy.

príklad:

  • abstraktná trieda AClass {
  • verejná abstraktná neplatná metóda (int a);
  • }
  • trieda BClass rozširuje AClass {
  • metóda public void (int a) {
  • // body
  • }

Premenné typu abstraktnej triedy sú povolené. Môžu sa odvolávať na neabstraktného potomka tejto triedy alebo byť nulová.

Rozhrania v jazyku Java - alternatíva k viacnásobnému dedičstvu

java rozhrania a abstraktné triedy

V jazyku Java neexistuje viacnásobné dedičstvo, pretože vzniknú určité problémy. Trieda nemôže dediť z viacerých tried. Ale potom môže implementovať niekoľko rozhraní.

Rozhrania a Java abstraktné triedy - konceptypodobné, ale nie identické. Rozhranie môže byť vyhlásené za verejné, potom je prístupné pre všetkých alebo môže byť vynechaný verejný modifikátor, potom je rozhranie k dispozícii len v jeho balíku. Abstraktné kľúčové slovo sa nevyžaduje, pretože rozhranie je už abstraktné, ale je možné ho špecifikovať.

Vyhlásenie rozhrania

rozdiel medzi abstraktnou triedou a rozhraním java

Začína s nadpisom a môže ísť prvýkľúčové slovo verejné, potom slovo rozhranie. Potom sa môže vyskytnúť slovo rozšírenie a vyčíslenie rozhraní, z ktorých je dané zdedené. Tu opakovania nie sú povolené a je tiež nemožné, aby dedičský vzťah tvoril cyklickú závislosť. Potom prichádza telo rozhrania, ktoré je umiestnené v zátvorkách. Nasledujúce prvky sú deklarované v tele rozhrania: konštantné polia a abstraktné metódy. Všetky polia sú verejné konečné statické - všetky tieto modifikátory sú voliteľné. Všetky metódy sa považujú za verejné abstraktné - tieto modifikátory môžu byť tiež špecifikované. Teraz je dosť dosť povedané o rozdieloch medzi abstraktnou triedou a rozhraním Java.

  • verejné rozhranie AI rozširuje B, C, D {
  • // body
  • }

Ak chcete deklarovať triedu ako dedič rozhrania, musíte použiť kľúčové slovo implementuje:

  • trieda AClass implementuje BI, CI, DI {}

To znamená, že ak je názov rozhrania špecifikovaný v deklarácii triedy po vykonaní, trieda ho implementuje. Dedičia tejto triedy dostanú svoje prvky, a tak ju tiež realizujú.

Premenné typu rozhrania sú tiež povolené. Môžu sa odvolávať na typ triedy, ktorý implementuje toto rozhranie, alebo null. Takéto premenné majú všetky prvky triedy Object, pretože objekty sú generované z tried, a tie zase sú zdedené z triedy Object.

V tomto článku sme sa pozreli na niektoré prvky modelu objektov Java - abstraktné triedy, abstraktné metódy a rozhrania.

Čítajte viac: