Abstraktsiooni peetakse objektorienteeritud programmeerimise üheks kõige olulisemaks tunnuseks. See aitab varjata rakendamise keerukust, pakkudes funktsioone juurdepääsetavate liideste kaudu.
Abstraktsiooni saavutamiseks Java-s kasutatakse laialdaselt abstraktseid klasse ja liideseid. Abstraktse klassi ja liidese rakendus on üksteisest erinev.
Võtme tagasivõtmine
- Abstraktsed klassid võimaldavad osalist rakendamist, samas kui liidesed ei paku rakendamist.
- Klass võib pärida ainult ühe abstraktse klassi, kuid rakendada mitut liidest.
- Abstraktsetel klassidel võivad olla konstruktorid, väljad ja mitteabstraktsed meetodid, liidestel aga mitte.
Abstraktne klass vs liides Javas
JJava abstraktse klassi ja liidese erinevus seisneb selles, et abstraktne klass viitab kasutaja määratletud tüübile, mis töötab objekti loomise kavandina. Abstraktsel klassil on meetodid ja omadused, mis esindavad objekti käitumist ja olekuid. Teisest küljest viitab liides kasutaja määratletud tüübile, millel võib olla liidese poolt rakendatud klasside poolt alistatud meetodisignatuuride ja väljakonstantide komplekt.
Abstraktne klass viitab klassile, mis sisaldab oma deklaratsioonis abstraktset märksõna. See aitab välja töötada betooniklasside kavandi.
Sellel peaks olema vähemalt üks abstraktne meetod, nagu meetodil, millel pole keha. Abstraktsel klassil võib olla mitu konkreetset meetodit. See võimaldab kasutajatel koode uuesti kasutada.
Liides viitab kavandile, mida kasutatakse klassi rakendamiseks. Liides ei sisalda konkreetseid meetodeid ega koodiga meetodeid. Liidesesse kaasatakse ainult abstraktsed meetodid või meetodid ilma koodita.
Liidese loomine on võimatu, kuid klasse rakendavaid liideseklasse saab hõlpsasti luua.
Võrdlustabel
Võrdlusparameetrid | Abstraktne klass Java keeles | Liides Java keeles |
---|---|---|
Võtmesõna | Abstraktse klassi deklareerimiseks kasutatakse abstraktset märksõna. | Liidese deklareerimiseks kasutatakse liidese märksõna. |
Meetodid | Abstraktsetes klassides võivad esineda nii mitteabstraktsed kui ka abstraktsed meetodid. | Liideses saab esitada ainult abstraktset meetodit. Alates sellest võib sellel olla ka staatilised ja vaikemeetodid Java 8. |
Muutujad | Abstraktne klass ei toeta mitut pärandit. | Liideses võivad olla ainult lõplikud ja staatilised muutujad. |
Pärisosa | Liides toetab mitut pärandit. | Teist javat saab laiendada ja abstraktne klass saab rakendada mitut Java-liidest. |
Laiendamine | Liidesega saab laiendada ainult teist Java-liidest. | Ainult teisel Java liidesel on võimalus liidese võrra laiendada. |
Mis on Java abstraktne klass?
Javas on abstraktne klass klass, mis deklareeritakse abstraktse märksõnaga. Nii mitteabstraktsed kui ka abstraktsed meetodid võivad sisalduda Javas abstraktses klassis.
Üldiselt viitab abstraktne klass mallile, mida kasutatakse kasulike programmeerimisandmete meetodite ja liikmete salvestamiseks. Javas ei ole abstraktse klassi instantieerimine otse võimalik. Selle asemel saab abstraktse klassi jagada alamklassidesse.
Abstraktne klass võimaldab arendajatel koodi juurutamist peita, mis aitab neil andmete abstraktsiooniprotsessi sujuvalt läbi viia.
Samuti säästab see aega kodeerimisel. Abstraktset meetodit saab kodeerimise ajal kutsuda kõikjal ja see väldib koodi kordamist.
Abstraktse klassi kasutamisel Java-s on kõige olulisemad reeglid
- Abstraktse klassi deklareerimisel on märksõna "abstraktne" omamine väga oluline.
- Javas ei ole abstraktse klassi instantseerimine otse võimalik. Abstraktses klassis on nõutav vähemalt üks abstraktne meetod.
- Lõplikud meetodid kuuluvad ka abstraktsesse klassi.
- Abstraktsesse klassi saab lisada staatilisi ja konstruktormeetodeid.
Abstraktse klassi peamised eelised Java-s on see, et sellest on palju abi lühikese pikkusega koodide kirjutamisel ja see välistab ka koodi dubleerimise võimaluse. See võimaldab ka koodi korduvkasutamist.
Mis on Java liides?
Nagu abstraktsel klassil, võib ka Java abstraktil olla muutujaid ja meetodeid. Kuid liideses on deklareeritud meetodid vaikimisi abstraktsed.
See määrab, kuidas ja mida abstraktne klass peab tegema. Seda peetakse abstraktse klassi plaaniks. Sellel on meetodite kogum, mida klass ei pruugi või võib rakendada.
Java liidest kasutatakse täieliku abstraktsiooni saavutamiseks. Sellel võib olla ka mitu pärandit, mida abstraktsed klassid ei toeta.
Samuti kasutatakse liidest lahtise sidumise saavutamiseks. Liidesed on Java kujundusmustrites laialdaselt kasutusel ja võivad täita teatud funktsioone.
Liidesemeetoditel pole kedagi. See on mehhanism, mida kasutatakse peamiselt Java mitme pärimise ja abstraktsiooni saavutamiseks.
Java liidese peamised omadused on:
- Java liides on täiesti abstraktne. Abstraktseid märksõnu pole Java-liidese deklareerimisel vaja.
- Kõik liidesemeetodid on samuti täiesti abstraktsed. Selle tulemusena pole liidese meetodite deklareerimisel vaja kasutada abstraktseid märksõnu.
- Iga liidese meetod on täiesti avalik.
Java-liidese peamine eelis on see, et seda saab kasutada andmete abstraktsiooni saavutamiseks ja seda saab kasutada ka mitmepärimine Java funktsioonid. Seda kasutatakse ka lahtises haakeseadises.
Peamised erinevused Java abstraktse klassi ja liidese vahel
- Abstraktsetes klassides võivad esineda nii mitteabstraktsed kui ka abstraktsed meetodid. Teisest küljest saab liideses esitada ainult abstraktseid meetodeid. Alates Java 8-st võib sellel olla ka staatilisi ja vaikemeetodeid.
- Abstraktsel klassil võivad olla mittestaatilised, staatilised, mittelõplikud ja lõplikud muutujad. Liideses võivad olla ainult lõplikud ja staatilised muutujad.
- Abstraktse klassi deklareerimiseks kasutatakse abstraktset märksõna. Liidese deklareerimiseks kasutatakse liidese märksõna.
- Abstraktne klass ei toeta mitut pärandit. Vastupidi, liides toetab mitut pärandit.
- Teist javat saab laiendada ja abstraktse klassi abil saab rakendada mitut Java-liidest. Siiski on ainult teisel Java liidesel võimalus liidesega laiendada.
- https://scholar.google.com/scholar?hl=en&as_sdt=0%2C5&q=abstract+class+in+java&btnG=#d=gs_qabs&u=%23p%3DW3WgwQb0NOAJ
- https://scholar.google.com/scholar?hl=en&as_sdt=0%2C5&q=interface+in+java&btnG=#d=gs_qabs&u=%23p%3Dzhwh3VcdqSkJ
Viimati värskendatud: 11. juunil 2023
Sandeep Bhandaril on arvutite bakalaureusekraad Thapari ülikoolist (2006). Tal on 20-aastane kogemus tehnoloogia vallas. Ta tunneb suurt huvi erinevate tehnikavaldkondade, sealhulgas andmebaasisüsteemide, arvutivõrkude ja programmeerimise vastu. Tema kohta saate tema kohta rohkem lugeda bio-leht.
See on muljetavaldav artikkel, selgitused on nii selged ja lühikesed. Väga hästi tehtud.
Kas võime hetkeks peatuda ja naerda selle üle, kuidas akadeemikud kirjutavad? See on naljakas, kuid suurepärane artikkel.
Abstraktsete klasside ja liideste kõrvuti võrdlemine on üsna kasulik. Otsisin sellist artiklit.
Usun, et see artikkel oleks võinud mind minu viimases projektis aidata. Kuid see on hea viide järgmiseks.
Ma arvan, et see artikkel ei ole nii kasulik, kui te ütlete. Ma arvan, et sellel puudub põhjalik selgitus.
Parem oleks, kui annaksite mõned koodinäited. Kuigi seletused on head.