Abstraktne klass vs pärand
Abstraktne klass ja pärimine on kaks olulist objektorienteeritud mõistet, mida leidub paljudes objektorienteeritud programmeerimiskeeltes, nagu Java. Abstraktset klassi võib pidada tavalise (konkreetse) klassi abstraktseks versiooniks, samas kui Inheritance võimaldab uutel klassidel teisi klasse laiendada. Abstraktne klass on klass, mida ei saa initsialiseerida, kuid mida saab laiendada. Seega on abstraktsed klassid mõttekad ainult siis, kui programmeerimiskeel toetab pärimist. Javas deklareeritakse abstraktsed klassid märksõnaga Abstract, samas kui märksõna Extends kasutatakse (super)klassist pärimiseks.
Mis on abstraktne klass?
Tavaliselt ei saa abstraktseid klasse, tuntud ka kui Abstract Base Classes (ABC), instantseerida (selle klassi eksemplari ei saa luua). Seega on abstraktsed klassid mõttekad ainult siis, kui programmeerimiskeel toetab pärimist (võime luua alamklasse klassi laiendamisest). Abstraktsed klassid esindavad tavaliselt abstraktset kontseptsiooni või olemit, mille rakendamine on osaliselt või üldse mitte. Seetõttu toimivad abstraktsed klassid vanemklassidena, millest alamklassid tuletatakse, nii et alamklassid jagavad põhiklassi mittetäielikke funktsioone ja nende täiendamiseks saab lisada funktsioone.
Abstraktsed klassid võivad sisaldada abstraktseid meetodeid. Abstraktset klassi laiendavad alamklassid võivad rakendada neid (päritud) abstraktseid meetodeid. Kui alamklass rakendab kõiki selliseid abstraktseid meetodeid, on see konkreetne klass. Kui aga seda ei juhtu, muutub ka lasteklass abstraktseks klassiks. See kõik tähendab, et kui programmeerija nimetab klassi abstraktseks, ütleb ta, et klass on mittetäielik ja sellel on elemente, mida pärivad alamklassid peavad täitma. See on hea viis kahe programmeerija vahel lepingu sõlmimiseks, mis lihtsustab tarkvaraarenduse ülesandeid. Programmeerija, kes kirjutab pärimiseks koodi, peab täpselt järgima meetodi määratlusi (kuid loomulikult võib tal olla ka oma rakendus).
Mis on pärimine?
Pärimine on objektorienteeritud kontseptsioon, mis võimaldab uutel klassidel teisi klasse laiendada. Märksõna Extends kasutatakse pärimise kontseptsiooni juurutamiseks Java programmeerimiskeeles. Pärimine pakub sisuliselt koodi taaskasutamist, võimaldades laiendada olemasoleva klassi omadusi ja käitumist äsja määratletud klassi võrra. Kui uus alamklass (või tuletatud klass) laiendab ülemklassi (või ülemklassi), pärib see alamklass kõik superklassi atribuudid ja meetodid. Alamklass võib valikuliselt alistada vanemklassilt päritud käitumise (pakkuda meetoditele uut või laiendatud funktsionaalsust). Tavaliselt ei saa alamklass laiendada mitut superklassi (nt Javas). Seetõttu ei saa te laiendusi kasutada mitme pärimise korral. Mitme pärandi saamiseks peate kasutama liideseid.
Mis vahe on abstraktsel klassil ja pärimisel?
Abstraktsed klassid esindavad tavaliselt abstraktset mõistet või olemit, mille rakendamine on osaliselt või olematu. Pärimine võimaldab uutel klassidel teisi klasse laiendada. Kuna abstraktseid klasse ei saa instantseerida, peate abstraktsete klasside kasutamiseks kasutama pärimise mõistet. Vastasel juhul pole abstraktsest klassist kasu. Abstraktsed klassid võivad sisaldada abstraktseid meetodeid ja klassi laiendamisel päritakse kõik meetodid (abstraktsed ja konkreetsed). Päritud klass võib rakendada mis tahes või kõiki meetodeid. Kui kõiki abstraktseid meetodeid ei rakendata, saab sellest klassist ka abstraktne klass. Klass ei saa pärida rohkem kui ühest abstraktsest klassist (see ei ole abstraktsete klasside omadus iseenesest, vaid pigem pärimise piirang).
Seotud postitused:
Abstraktse klassi ja konkreetse klassi erinevus
Erinevus virtuaalse ja abstraktse vahel
Erinevus abstraktse klassi ja liidese vahel
Erinevus rakenduste ja laienduste vahel
Graafiku ja puu erinevus
Filed Under: Programmeerimine Sildistatud: ABC, abstraktne, abstraktsed põhiklassid, abstraktsed klassid, abstraktsed klassid, abstraktne märksõna, abstraktsed meetodid, konkreetne klass, laiendab märksõna, pärand, pärimisklass, päritud klass, Java, mitu pärimist, objektorienteeritud mõisted, tavaline klass, superklass
Autori kohta: Indika
Indika, BSc. Eng, MSECE arvutitehnika, PhD. Arvutiteadus, on abiprofessor ja tal on uurimishuvid bioinformaatika, arvutusbioloogia ja biomeditsiinilise loomuliku keele töötlemise valdkondades.
Comments
-
Jason ütleb
30. august 2017, kell 13.25
Täname erinevuse selgitamise eest. Kõik minu küsimused on sellega lahendatud.
Vasta
-
Aus ütleb
10. mai 2019, kell 15.04
parim vastus veebis, Õpetaja ei seleta jama ja pole mõtet, monotooniline mf. Nii selgitate mõisteid.
Vasta
Jäta vastus Tühista vastus
Teie e-posti aadressi ei avaldata. Kohustuslikud väljad on märgistatud
Kommenteeri
Nimi
E-post
Veebisait

Esiletõstetud postitused
Erinevus koroonaviiruse ja külmetuse sümptomite vahel
Erinevus koroonaviiruse ja SARSi vahel
Erinevus koroonaviiruse ja gripi vahel
Erinevus koroonaviiruse ja Covid 19 vahel
Sulle võib meeldida
Siberi husky ja malamuudi erinevus
Calculus AB ja BC erinevus
Topeltmajuri ja topeltkraadi erinevus
Erinevus heledate ja tumedate särkide ülekandepaberi vahel
vahel