www.wikidata.uk-ua.nina.az
Cya stattya ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno sichen 2023 V ob yektno oriyentovanomu programuvanni abstraktnij klas ce bazovij klas vid yakogo ne mozhna stvoriti ekzemplyaru Na praktici abstraktni klasi realizuyut odin z principiv OOP polimorfizm V abstraktnomu klasi mozhna opisati abo ne viznachiti abstraktni metodi ta vlastivosti Abstraktnij metod ne realizovuyetsya v klasi v yakomu opisuyetsya ale maye buti realizovanij v neabstraktnomu nashadku Abstraktni klasi vvazhayutsya najbilshimi uzagalnenimi abstrakciyami tobto vidnoshennya ob yemu opisiv do ob yemu realizaciyi najbilshe V deyakih movah zaboroneno stvoryuvati ekzemplyari abstraktnih klasiv v inshih dozvolyayetsya napriklad Delphi ale zvernennya danogo ekzemplyara do abstraktnogo metodu vikliche pomilku V bagatoh movah dozvolyayetsya ogoloshuvati bud yakij klas abstraktnim navit yaksho v nomu nema abstraktnih metodiv napriklad Java Dlya togo shob zaboroniti stvorennya ekzemplyariv Abstraktnij klas mozhna rozglyadati yak interfejs dlya simejstva klasiv yaki nim porodzheni ale na protivagu klasichnomu interfejsu abstraktnij klas mozhe mistiti realizaciyu metodiv ta vlastivosti Abstraktni metodi perevazhno ye i virtualnimi cherez ce ponyattya abstraktnij ta virtualnij inkoli plutayut Zmist 1 Vikoristannya abstraktnih klasiv 2 Priklad 2 1 Java 2 2 Delphi 2 3 C 2 4 C 3 Div takozhVikoristannya abstraktnih klasiv RedaguvatiAbstraktni klasi vidigrayut vazhlivu rol dlya statichnoyi tipizaciyi v ob yektno oriyentovanih movah Bagato dinamichno tipizovanih mov ne mayut shozhih mehanizmiv hocha vikoristannya latentnoyi tipizaciyi vidkidaye potrebu v abstraktnih klasah a she trejti realizaciyu yakih mozhna znajti v suchasnih dinamichno tipizovanih movah Deyaki programisti stverdzhuyut sho klasi povinni buti finalnimi bez pohidnih abo abstraktnim Abstraktni klasi korisni tim sho za yihnoyu dopomogoyu mozhna viznachiti protokol nabir operacij yaki mayut buti u vsih ob yektah yaki realizuyut protokol Priklad RedaguvatiJava Redaguvati abstract class Demo Abstraktnij klas mozhe vklyuchati abstraktni metodi bez implementaciyi abstract public int sum int x int y Abstraktnij klas takozh vklyuchaye konkretni metodi public int product int x int y return x y interface DemoInterface Vsi metodi abstraktni int getLength Delphi Redaguvati V Delphi mozhna ogolositi abstraktnij klas z abstraktnimi metodami TAbstractClass class procedure NonAbstractProcedure procedure AbstractProcedure abstract end Vid cogo klasu mozhna stvoriti ekzemplyar ale zvernennya do metodu AbstractProcedure danogo ob yektu vivede pomilku V ostannih versiyah Delphi realizovano mozhlivist ogoloshuvati sam klas yak abstraktnij TAbstractClass class abstract procedure SomeProcedure end Hoch metod SomeProcedure mozhe buti realizovanij ne abstraktnim v mezhah danogo klasu ale stvoryuvati ekzemplyari takih klasiv zaboroneno C Redaguvati Shob v C klas vvazhavsya abstraktnim u nomu maye buti opisana shonajmenshe odna chista virtualna funkciya ce taka funkciya yaka ne realizovana v danomu klasi viglyadu virtual signatura metodu 0 Yaka tak yak i inshi mozhe buti viznachena v klasah nashadkah Priklad na movi programuvannya C include lt iostream gt class CA Abstraktnij klas public CA void std cout lt lt Ce ob yekt klasu virtual void Abstr void 0 void fun void std cout lt lt Realizaciya ne bude nasliduvatisya CA std cout lt lt lt lt std endl class CB public CA public CB void std cout lt lt CB void Abstr void std cout lt lt viklik funkciyi cb Abstr void fun void std cout lt lt viklik funkciyi cb fun CB class CC public CA public CC void std cout lt lt CC void Abstr void std cout lt lt viklik funkciyi cc Abstr void fun void std cout lt lt viklik funkciyi cc fun CC int main std cout lt lt Program lt lt std endl CB cb cb Abstr cb fun cb CB CC cc cc Abstr cc fun cc CC return 0 Rezultat roboti programi Program Ce ob yekt klasu CB viklik funkciyi cb Abstr viklik funkciyi cb fun Ce ob yekt klasu CC viklik funkciyi cc Abstr viklik funkciyi cc fun C Redaguvati Modifikator abstract vkazuye na te sho danij klas mozhna vikoristovuvati tilki yak bazovij klas dlya nasliduvannya Abstraktnij klas mozhe mistiti abstraktni metodi ta metodi dostupu Stvoryuvati ekzemplyar abstraktnogo klasu zaboroneno cherez viklik konstruktora ale ekzemplyar abstraktnogo klasu stvoryuyetsya neyavno pri stvoreni pohidnogo klasu vid danogo abstraktnogo klasu Neabstraktnij klas yakij pohidnij vid abstraktnogo maye mistiti realni realizaciyi vsih abstraktnih metodiv ta metodiv dostupu Shob vkazati pro vidsutnist realizaciyi metoda chi vlastivosti vikoristovujte modifikator abstract pri yih ogolosheni Abstraktnij metod ce neyavnij virtualnij metod Tilki v abstraktnih klasah ta interfejsah stereotipah yaki analogichni chistim abstraktnim klasam v yakih vidsutnya bud yaka realizaciya dopuskayetsya ogoloshennya abstraktnih chleniv metodiv vlastivostej podij Oskilki ogoloshennya abstraktnih metodiv ne nadayut faktichnoyi realizaciyi tilo metoda vidsutnye ogoloshennya metoda prosto zavershuyetsya krapkoyu z komoyu analogichno ogoloshennyu prototipiv public abstract void AbstractMethod Realizaciya metodu stvoryuyetsya shlyahom pereviznachennya override v neabstraktnomu klasi Zaboroneno vikoristovuvati statichni chi virtualni modifikatori pri ogolosheni abstraktnih metodiv abo vlastivostej Ogoloshennya ta realizaciya abstraktnih vlastivostej ne silno vidriznyayutsya vid abstraktnih metodiv prisutni tilki neznachni sintaksichni rozbizhnosti v ogoloshenni i viklikah Abstraktne nasliduvannya vlastivostej mozhe buti viznacheni v pohidnomu klasi za rahunok vklyuchennya ogoloshennya vlastivosti z modifikatorom pereviznachennya abstract class BaseClass protected int x 100 protected int y 150 public abstract void AbstractMethod public abstract int X get public abstract int Y get class DerivedClass BaseClass public override void AbstractMethod x y public override int X get return x 10 public override int Y get return y 10 static void Main DerivedClass o new DerivedClass o AbstractMethod Console WriteLine x 0 y 1 o X o Y Output x 111 y 161 V abstraktnomu klasi mayut buti realizovani vsi chleni interfejsu Abstraktnij klas yakij realizuye interfejs mozhe predstavlyati metodi interfejsu yak abstraktni metodi interface I void M abstract class C I public abstract void M Abstraktnij klas z modifikator sealed zminyuvati ne mozhna oskilki ci dva modifikatori mayut superechlivi vlastivosti Modifikator sealed zaboronyaye nasliduvannya a abstract obov yazkovo maye mati pohidnij klas Div takozh RedaguvatiOb yektno oriyentovane programuvannya Virtualnij metod Sistema tipizaciyi Otrimano z https uk wikipedia org w index php title Abstraktnij klas amp oldid 37974606