nisfarm.ru

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).java abstraktní třída

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.abstraktní třídy abstraktní metody java 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í

rozhraní a abstraktní java třídy

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í

rozdíl mezi abstraktní třídou a rozhraním java

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í.

Sdílet na sociálních sítích:

Podobné
© 2021 nisfarm.ru