Prvky Java Object Modelu: abstraktní třída, rozhraní

Hlavní myšlenkou abstraktní třídy je následující teze: někdy požadované třídy nejsou připraveni, ale v „surové“ formě. Takové obrobky nemohou být přímo použity (vytvářet instance).

Co je abstraktní třída Java

Zvažme další příklad. V balíčku Java.util je abstraktní třída Java. Minul konkrétní kalendář používá, například v západní a východní Evropě, Číně, Severní Koreji, Thajsku a tak dále. D. Ale to má mnoho užitečných funkcí, jako je například přidání několika dny k určitému datu, jsou nutné tyto funkce pro všechny - jakékoliv provádění kalendáře. Nemůžete vygenerovat instanci z abstraktní třídy.


abstraktní třídy abstraktní metody Java

Předpokládejme, že je třeba vyvinout některé grafické prvky, jako jsou například geometrické tvary:. Kružnice, obdélník, hvězdy a tak dále D. A tam je kontejner, který by kreslí Každá podoba složka je odlišná, protože je implementována vhodná metoda (i když to je voláno barvy) jinak. Nicméně, každá složka je mnoho společného: údaje musí být vepsána do obdélníku může mít barvu, viditelné i neviditelné, a tak dále E. To chcete vytvořit nadřazené třídy pro všechny z těchto částí, přičemž každá komponenta následují obecné vlastnosti..
Ale jak se používá metoda barvy? Koneckonců, mateřská třída nemá vizuální reprezentaci. Pokud deklarovat metodu barvou v každé třídě nezávisle, budou muset analyzovat, která komponenta je zpracován a proveďtepřinášející typ Proto musí být metoda v rodičovské třídě deklarována abstraktně: nastavte název metody bez těla. A tělo každé třídy derivátů bude popisovat své vlastní. V Javě může abstraktní třída obsahovat abstraktní metody.


Pokud jsou ve třídě abstraktní metody, pak je třída abstraktní. Před třídou slov je umístěno abstraktní klíčové slovo také v názvu metody. Po názvu této metody musíte nastavit středník. V jazyce Java abstraktní třída nemůže generovat instance. Chceme-li zakázat jejich stvoření, i když neexistují abstraktní metody ve třídě, může být tato třída prohlášena za abstraktní. Ale pokud je ve třídě nejméně jedna abstraktní metoda, pak by měla být třída abstraktní. Je nemožné, aby byla třída abstraktní a konečná, a také metoda. Metoda nemůže být abstraktní, soukromá, statická, domorodá. Třída dědiců může být prohlášena za neabstraktní a vytvářet jejich kopie, musí realizovat všechny abstraktní metody otce. Samotná třída může používat abstraktní metody. Příklad:
  • abstraktní třída AClass {
  • public abstract void metoda (int a);
  • třída BClass rozšiřuje AClass {
  • veřejná neplatná metoda (int a) {
  • ] Proměnné typu abstraktní třídy jsou povoleny. Mohou se odvolávat na neabstraktní žákyně této třídy nebo mají nulové hodnoty.

    Rozhraní v jazyce Java - alternativa k více dědictví

    Java nemá více dědictví, 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í Java třídy jsou podobné pojmy,ale neodpovídají. Rozhraní může být deklarováno jako veřejné, pak je dostupné všem, nebo nemůžete zadat veřejný modifikátor, pak je rozhraní dostupné pouze uvnitř vašeho balíčku. Abstraktní klíčové slovo se nevyžaduje, protože rozhraní je abstraktní, takže jej lze určit.

    Prohlášení o rozhraní

    Začíná se záhlavím a může být nejprve následováno veřejným klíčovým slovem, následovaným slovním rozhraním. Potom lze následovat rozšíření slov a seznam rozhraní, ze kterých daný může dědit. Není zde dovoleno opakovat a není možné, aby vztah dědictví vytvářel cyklickou závislost. Pak přichází tělo rozhraní, uzavřené v křivkách. V těle rozhraní jsou deklarovány prvky: polní konstanty a abstraktní metody. Všechna pole jsou veřejné statické finále - všechny tyto modifikátory se nevyžadují. Všechny metody jsou považovány za veřejné abstraktní - mohou být také modifikovány. Nyní je již dostatečně řečeno o abstraktní třídě z rozhraní Java.
  • public interface AI rozšiřuje B, C, D {
  • //body
  • }
  • Pro vyhlášení třídy jako nástupce rozhraní použijte klíčové nástroje: BI, CI, DI {}To znamená, že pokud je v deklaraci třídy po implementaci zadán název rozhraní, pak ji implementuje třída. Dědici této třídy dostávají své prvky, takže si to také uvědomují. Proměnné typu rozhraní jsou také povoleny. Mohou se odkázat na typ třídy, která implementuje toto rozhraní, nebo null. Tyto proměnné mají všechny prvky v třídě Object, protože objekty jsou generovány z tříd a ty jsou následně zděděny z třídyObjekt V tomto článku jsme přezkoumali některé prvky modelu objektu Java - abstraktní třídy, abstraktní metody a rozhraní.

    Související publikace