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).
Č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.
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
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
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.