Prvky modelu objektu Java: abstraktní třída, rozhraní
Hlavní myšlenka abstraktní třídy spočívá v následující práci: někdy nejsou připraveny třídy, ale v "surové" formě. Takové polotovary nelze použít přímo (vytvořit instance).
Obsah
Jaká je abstraktní třída v Javě?
Zvažme další příklad. V balíčku Java.util je v Javě abstraktní třída kalendáře. Neimplementuje konkrétní kalendář, který se používá, například v západní a východní Evropě, Číně, Severní Koreji, Thajsku, atd, ale má mnoho užitečných funkcí, jako je například přidání několika dny k určitému datu: .. Tyto funkce jsou nezbytné pro některý provádění kalendáře. Nemůžete spustit instanci z abstraktní třídy.
Abstraktní třídy, abstraktní metody Java
Řekněme, že potřebujete vytvořit několik grafických prvků, například geometrické tvary: kruh, obdélník, hvězda atd. A je zde kontejner, který je kreslí. Každá součást má jiný vzhled, takže odpovídající metoda (nechá se nazývat barva) se provádí jinak. Nicméně, každá komponenta má mnoho podobností: .. Na obrázku by měla být zahrnuta do pole může mít barvu, aby byly viditelné i neviditelné, atd. Jinými slovy, je třeba vytvořit rodičovskou třídu pro všechny z těchto čísel, kde každá komponenta dědí obecné vlastnosti. Ale co způsob barvy? Koneckonců, mateřská třída nemá vizuální reprezentaci. Pokud deklarujete metodu nátěru v každé třídě nezávisle, budete muset analyzovat, která součástka se zpracovává, a pak jej odlišit. Metoda by proto měla být v nadřazené třídě deklarována abstraktně: nastavte záhlaví metody bez těla. A každá odvozená třída bude popisovat její tělo. V jazyce Java abstraktní třída mohou uzavřít abstraktní metody.
Pokud má třída abstraktní metody, pak je třída abstraktní. Předtím, než je slovo ve třídě vloženo klíčové slovo abstrakt, do záhlaví metody - taky. Po hlavičce této metody musíte umístit středník. V Javě nemůže třída abstraktů spouštět instance. Chceme-li zakázat jejich vytvoření, i když třída nemá abstraktní metody, může být tato třída prohlášena za abstraktní. Ale pokud třída má alespoň jednu abstraktní metodu, pak musí být třída abstraktní. Není možné, aby byla třída abstraktní, finální i metodická. Metoda nemůže být abstraktní, soukromá, statická, domorodá. Aby třídy dědiců mohly být prohlášeny za neabstraktní a vytvářet jejich instance, musí implementovat všechny abstraktní metody rodiče. Samotná třída může používat abstraktní metody.
Příklad:
- abstraktní třída AClass {
- veřejná abstraktní neplatná metoda (int a) -
- }}
- třída BClass rozšiřuje AClass {
- metoda public void (int a) {
- // tělo
- }}
Proměnné typu abstraktní třídy jsou povoleny. Mohou odkazovat na neabstraktní potomky této třídy nebo být nulové.
Rozhraní v jazyce Java - alternativa k více dědictví
Java nemá více dědičnosti, protože existují určité problémy. Třída nemůže dědit z několika tříd. Může však implementovat několik rozhraní.
Rozhraní a abstraktní třídy Java - koncepty jsou podobné, ale ne stejné. Rozhraní může být prohlášeno za veřejné, pak je přístupné všem, nebo nemůžete zadat modifikátor veřejné, pak je rozhraní k dispozici pouze v jeho balíčku. Abstraktní klíčové slovo se nevyžaduje, protože rozhraní je již abstraktní, ale můžete jej zadat.
Prohlášení o rozhraní
Začíná se záhlavím a nejprve následuje klíčové slovo public, pak slovo. Pak se může vyskytovat slovo rozšíření a výčet rozhraní, ze kterých je toto zděděno. Nepovolují se žádné opakování a není také možné, aby vztah dědičnosti byl cyklický. Pak přichází tělo rozhraní, uzavřené ve svincích. Elementová pole jsou deklarována v těle rozhraní: konstantní pole a abstraktní metody. Všechna pole jsou veřejné konečné statické - všechny tyto modifikátory jsou volitelné. Všechny metody jsou považovány za veřejné abstraktní - lze také specifikovat tyto modifikátory. Nyní stačí říct o rozdílu abstraktní třídy z rozhraní Java.
- veřejné rozhraní AI rozšiřuje B, C, D {
- // tělo
- }}
Chcete-li deklarovat třídu jako dědice rozhraní, musíte použít klíčové slovo implements:
- třída AClass implementuje BI, CI, DI {}
To znamená, že jestliže je název rozhraní uveden v deklaraci třídy po implementaci, pak ji třída implementuje. Dědici této třídy dědí její prvky, a tak ji také implementují.
Rovněž jsou povoleny proměnné typu rozhraní. Mohou se odkázat na typ třídy, která implementuje toto rozhraní, nebo null. Tyto proměnné mají všechny prvky třídy Object, protože objekty jsou generovány z tříd a ty zase děděné z třídy Object.
V tomto článku jsme se zaměřili na některé prvky modelu objektů Java - abstraktní třídy, abstraktní metody, rozhraní.
- První program Java je Hello World
- Abstrakce je proces poznání
- Schopnost abstraktní je radostná schopnost přemýšlet abstraktně
- Abstraktní obrazy jako způsob, jak odrážet váš vnitřní svět
- Jak se kompozity skládají z geometrických tvarů
- Tetování abstraktní jako příležitost k odhalení vašich myšlenek
- Abstraktní kresba - jak a co můžete kreslit?
- Myslím abstraktní je ... Psychologie: myšlení, typy myšlení
- Java: regulární výrazy, speciální znaky
- Programování: Java. Typy dat
- Abstraktní třída a metoda: popis, vlastnosti a rysy. Jaký je rozdíl mezi abstraktní třídou a…
- Otázka času: jak udělat formát data a kde hledat podstatu data
- Java: InputStream. Vstupní toky
- Generika jazyka Java: Popis a metody
- BigInteger Java: práce s velkými čísly
- Java Array. Pole v Javě. Java pro začátečníky
- Abstraktní podstatné jméno a jeho úloha v jazyce
- Java: práce se soubory - psaní, čtení, mazání
- Dítě dáváme na účet. Problémy a příklady pro první třídu v matematice
- Co je to abstrakce?
- Jak psát do souboru v jazyce Java