nisfarm.ru

Abstraktní třída a metoda: popis, vlastnosti a rysy. Jaký je rozdíl mezi abstraktní třídou a rozhraním

Každý, kdo má alespoň minimální znalosti programování, se divil, proč existují abstraktní základní třídy. Jaký je jejich účel? Jak vytvořit abstraktní třídu? Jaké výhody dávají v praxi? Proč je zapotřebí při programování a jaké funkce jejich implementace je třeba vzít v úvahu?

Abstraktní třídy

abstraktní třídaTakže v programování se nazývá jednotka programového kódu, na základě kterého nelze vytvořit objekty. Je třeba poznamenat, že dědici této třídy nemusí být abstraktní. Proto je možné vytvářet objekty na jejich základě. Pokud vezmeme v úvahu příklad z jazyka Java, budeme takový model stavět: můžeme popsat konstruktory třídy A. Ale nemůžeme je použít. Cesta z této situace je deklarovat proměnnou jako odkaz. A je třeba jasně říci, že ukazuje na objekt třídy A. Ale jak to lze udělat? Obsazení nám v tom pomůže. Je třeba poznamenat, že mateřská třída je vždy považována za univerzálnější než dítě. V mnoha programovacích jazycích se casting používá automaticky. Pokud však neexistuje důvěra v dostupnost takového mechanismu, musíte explicitně zadat odkaz na objekt.

Abstraktní metody

Co jsou to? Abstraktní názvy jsou metody, které v dané třídě nemají žádnou implementaci. Takže po zaokrouhlení (v němž jsou uvedeny argumenty použité v nich) se neotvírají kudrnaté (po kterém je umístěn blok popisu metody), ale pouze středník. V tomto případě tedy nejsou informace o tom, co dělá. Zde můžete položit otázku: "Proč je metoda bez implementace?" Koneckonců, nemůže být použita! Samozřejmě, to není možné ve třídě, kde to bylo popsáno. Pokud však tuto situaci zvážíme z pohledu potomka, pak jej lze nazvat. A bude fungovat podle konkrétního popisu v této třídě.

Vlastnosti abstraktních metod




vytvořit abstraktní tříduJejich použití je omezeno. Zvažme to na příkladu Java programovací jazyk. Zde existuje takový požadavek: pokud existuje alespoň jedna taková metoda ve třídě, pak musí být nutně abstraktní. A v jakých případech je vhodné takové konstrukce používat? Podívejme se na to v případě domácích tříd. Za prvé, mělo by být zřejmé, že žádný zvuk není zveřejněn. Proto v nejobecnější třídě není implementace metody zvuku určena. Ale pro něj je vytvořeno tělo, které je odděleno bloky. A již v budoucnu, kdy bude vytvořena třída pro psy, kočky nebo křečky, bude předepsána samostatná metoda pro něho, v jejímž rámci budou odhaleny všechny rysy.

Rozhraní

jaký je rozdíl mezi abstraktní třídouPři programování bylo vytvořeno mnoho nástrojů, jejichž cílem je pomoci člověku, aby vytvořil kvalitní produkt. A v rámci zkoumaného tématu je třeba věnovat pozornost tomuto aspektu, aby každý znal rozdíl mezi abstraktní třídou a rozhraním. Takže zvláštní je to, že nemůže mít vlastnosti a metody nedefinují těla. Při zkoumání toho, co se abstraktní třída liší od rozhraní, je třeba se zabývat ještě jednou. Takže první je zděděn, zatímco druhý je realizován. Pro nezkušeného člověka se to může zdát nevýznamné. Ale faktem je, že pouze jedna třída může být zděděna a jakékoli číslo může být implementováno. Takto se rozhraní liší abstraktní třída. Java má vlastnosti, které mohou popisovat pouze abstraktní veřejné metody a statické konstanty. Rozhraní lze však také zdědit. V tomto případě je nutné uvést, že používané operátoři jsou veřejní s pomocí veřejnosti.

Více dědičnosti rozhraní

než abstraktní třída se liší od rozhraníTato funkce není přístupná třídám v mnoha programovacích jazycích (například v Javě, kterou uvažujeme). To je způsobeno řadou problémů. Jako takové uveďte nejednoznačnost, která vzniká při dědění. To byl důvod pro zavedení více dědičných rozhraní. To částečně řeší stávající problémy, ale ne všechny. Takže díky zásadám zapouzdření a polymorfismu mohou být rozhraní úspěšně implementována v různých třídách různými metodami (i když budou mít stejný název). Ale nezapomeňte na existující problémy. Takže při práci s více rozhraními budete vždy muset určit, kdo myslíme. Také se vyskytnou problémy při práci se dvěma metodami stejného jména, v takovém případě je nelze použít. Proto je v takových případech nutné dbát na dostupnost společné realizace.

Abstraktní údaje

abstraktní třída a rozhraníTato koncepce je klíčová v programování. V tomto případě se abstrakce chápe jako samostatná úvaha a oddělení rozhraní a jeho implementace. Podívejme se na příklad. Máme televizi, což je objekt nebo modul. Má rozhraní. Jako takový jsou ovládání, stejně jako přehrávání zvuku a obrazu. Čím pokročilejší je rozhraní, tím pohodlnější je televizor v provozu. Programy můžeme přepínat kliknutím na tlačítka. V tomto případě není třeba přemýšlet o fyzických procesech v televizoru. Zajišťují je odborníci, kteří přístroj shromažďují. Máme zájem o vlastnosti pouze jako uživatelé. Vrátit se k programování, můžeme říci, že jsou touto analogií rozhraní a implementace. Také, pokud je člověk jistý svým vědomím, pak může "odstranit" kryt z naší hypotetické televize a vylepšit ji. I když to může vést k místním úspěchům, ve většině případů je konečný výsledek negativní. Proto v programování je přístup odepřen a vnitřní součásti jsou skryty pro abstraktní data. Princip tohoto mechanismu poskytuje způsoby, jak zabránit úmyslné nebo náhodné modifikaci vnitřních součástí. A když mluví o abstraktních datových typech, znamenají jejich sbírku s řadou operací, které je lze provést na nich.

Objekty

Již jsme zkoumali abstraktní třídu a rozhraní obecně a obecně. Nyní nám trochu podrobně informujeme. Za prvé věnujeme pozornost objektům. Tímto se v obecném případě rozumí část okolní reality, která existuje v prostoru a čase. Je však obtížné formálně definovat objekty v rámci programování (z filozofického a teoretického hlediska). Proto se to dělá díky vlastnostem. Jako příklad lze uvést následující: Objekt může být jednoznačně identifikována (s jedinečný název), je v určitém stavu a používá určitý vzor chování.

Dědictví

abstraktní základní třídyVzhledem k tomu, že programování je založeno na vytváření hierarchického stromu vztahů mezi objekty, vzniká otázka, že vlastnosti knihoven nadřazeného kódu by měly být přenášeny na podkladové typy. Dědictví je chápáno jako vztah, když člověk opakuje chování a strukturu něčeho jiného. V obyčejném životě to lze nalézt všude. To bylo také přeneseno do programování s ohledem na abstraktní prvky. Jako srovnání můžeme citovat skutečnost, že neexistuje žádný takový organismus jako pták. Toto je abstraktní jméno. Jako konkrétní exemplář přivezete racek, slepice nebo vrabce. Kvůli dědictví můžeme použít třídní knihovny a také je rozvíjet pro konkrétní program. Takový nástroj nám umožňuje vytvářet nové objekty, současně přidávat nebo měnit vlastnosti již vytvořených objektů. Dědic získá všechny metody a pole svého předka a v případě potřeby získá vlastní atributy. Vzhledem k tomu, že existují abstraktní prvky a princip dědictví, existují dostatečné možnosti pro modifikaci v rámci objektově orientovaného programování. Kromě toho vám umožňuje flexibilně přistupovat k řešení úkolů. Když zdědíte, data a funkce jsou předány nové třídě.

Polymorfismus

rozdíl mezi abstraktní třídou a rozhranímJe nutné použít stejné funkce pro řešení různých typů úloh. V takovém případě poskytuje přítomnost možnosti jiného účinku, bude obsah, které jsou závislé na typu objektu, se kterou je práce vykonávána. Polymorfismus je chápán jako vlastnost prvků, které mají jednoho společného rodiče, provádět různé problémy v sémantickém významu různými způsoby. Provádíme analogii se zvířaty. Existuje taková akce - běh. Všichni pochopíme, jak se to stane. Ale s různými zvířaty (lev, slon, šimpanz, krokodýl, želva) se tato akce bude provádět jinak. V tomto případě, jejich pohyb je zodpovědný developer, který v případě potřeby může vést k určitému případu určitá rutina, algoritmů a úspěšné provádění. To se provádí pomocí souboru metod. V tomto případě v každé samostatné třídě programátor označuje, který objekt má vlastnosti, které jsou vlastní. Když něco změníte v potomcích, můžete v tomto případě dosáhnout určitých nezbytných kroků. Takový vliv se nazývá objektový polymorfismus. Abstraktní třída je obecně velmi užitečným programovacím nástrojem.

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

Podobné
© 2021 nisfarm.ru