Abstraktiluokka vs perintö
Abstract class ja Heritance ovat kaksi tärkeää oliopohjaista käsitettä, joita löytyy monista olioohjelmointikielistä, kuten Java. Abstraktia luokkaa voidaan pitää tavallisen (konkreettisen) luokan abstraktina versiona, kun taas perinnöllisyys mahdollistaa uusien luokkien laajentamisen muihin luokkiin. Abstrakti luokka on luokka, jota ei voi alustaa, mutta jota voidaan laajentaa. Abstrakteilla luokilla on siis merkitystä vain, jos ohjelmointikieli tukee periytymistä. Javassa abstraktit luokat ilmoitetaan käyttämällä Abstract-avainsanaa, kun taas Extends-avainsanaa käytetään (super)luokasta perimiseen.
Mikä on abstrakti luokka?
Yleensä abstrakteja luokkia, jotka tunnetaan myös nimellä Abstract Base Classes (ABC), ei voida instantoida (tämän luokan esiintymää ei voida luoda). Abstrakteilla luokilla on siis merkitystä vain, jos ohjelmointikieli tukee periytymistä (kyky luoda alaluokkia luokan laajentamisesta). Abstraktit luokat edustavat yleensä abstraktia käsitettä tai kokonaisuutta, joka on osittain toteutettu tai ei ollenkaan. Siksi abstraktit luokat toimivat pääluokina, joista alaluokat johdetaan, joten aliluokka jakaa yläluokan epätäydelliset ominaisuudet ja toimintoja voidaan lisätä niiden täydentämiseksi.
Abstraktit luokat voivat sisältää abstrakteja menetelmiä. Abstraktia luokkaa laajentavat alaluokat voivat toteuttaa nämä (perityt) abstraktit menetelmät. Jos lapsiluokka toteuttaa kaikki tällaiset abstraktit menetelmät, se on konkreettinen luokka. Mutta jos ei, lapsiluokasta tulee myös abstrakti luokka. Kaikki tämä tarkoittaa, että kun ohjelmoija nimeää luokan tiivistelmäksi, hän sanoo, että luokka on epätäydellinen ja siinä on elementtejä, jotka perivien alaluokkien on täydennettävä. Tämä on mukava tapa tehdä sopimus kahden ohjelmoijan välille, mikä yksinkertaistaa ohjelmistokehityksen tehtäviä. Ohjelmoijan, joka kirjoittaa perittävän koodin, on noudatettava menetelmän määritelmiä tarkasti (mutta tietysti hänellä voi olla oma toteutus).
Mitä perintö on?
Perintö on olio-konsepti, jonka avulla uudet luokat voivat laajentaa muita luokkia. Extends-avainsanaa käytetään perinnön käsitteen toteuttamiseen Java-ohjelmointikielessä. Periytys mahdollistaa koodin uudelleenkäytön mahdollistamalla olemassa olevan luokan ominaisuuksien ja toiminnan laajentamisen äskettäin määritellyllä luokalla. Kun uusi alaluokka (tai johdettu luokka) laajentaa superluokkaa (tai emoluokkaa), tämä alaluokka perii kaikki superluokan attribuutit ja menetelmät. Alaluokka voi valinnaisesti ohittaa emoluok alta perityn toiminnan (tarjoaa uusia tai laajennettuja toimintoja menetelmille). Tyypillisesti alaluokka ei voi laajentaa useita superluokkia (esim. Javassa). Siksi et voi käyttää laajennuksia moniperinnössä. Jotta voit saada useita perintöjä, sinun on käytettävä rajapintoja.
Mitä eroa on abstraktin luokan ja perinnön välillä?
Abstraktit luokat edustavat yleensä abstraktia käsitettä tai kokonaisuutta, joka on toteutettu osittain tai ei ollenkaan. Perinnön ansiosta uudet luokat voivat laajentaa muita luokkia. Koska abstrakteja luokkia ei voida instantoida, sinun on käytettävä perinnön käsitettä käyttääksesi abstrakteja luokkia. Muuten abstraktilla luokalla ei ole käyttöä. Abstraktit luokat voivat sisältää abstrakteja menetelmiä ja kun luokkaa laajennetaan, kaikki menetelmät (abstraktit ja konkreettiset) periytyvät. Peritty luokka voi toteuttaa minkä tahansa tai kaikki menetelmät. Jos kaikkia abstrakteja menetelmiä ei ole toteutettu, siitä luokasta tulee myös abstrakti luokka. Luokka ei voi periä useammasta kuin yhdestä abstraktista luokasta (tämä ei ole abstraktien luokkien ominaisuus sinänsä, vaan pikemminkin periytymisen rajoitus).
Aiheeseen liittyvät viestit:
Abstraktin ja konkreettisen luokan ero
Ero virtuaalisen ja abstraktin välillä
Abstraktin luokan ja käyttöliittymän ero
Toteutusten ja laajennusten ero
Kaavion ja puun ero
Filed Under: Ohjelmointi Tagged With: ABC, abstrakti, abstrakti perusluokat, abstrakti luokka, abstrakti luokat, abstrakti avainsana, abstrakti menetelmät, konkreettinen luokka, laajentaa avainsanaa, perintö, periytymisluokka, peritty luokka, Java, moniperintö, oliokäsitteet, tavallinen luokka, superluokka
Tekijästä: Indika
Indika, BSc. Eng, MSECE Computer Engineering, PhD. Tietojenkäsittelytiede, on apulaisprofessori ja hänellä on tutkimusintressejä bioinformatiikan, laskennallisen biologian ja biolääketieteellisen luonnollisen kielen käsittelyn aloilla.
Kommentit
-
Jason sanoo
30. elokuuta 2017 klo 13.25
Kiitos, että selitit eron. Kaikki kysymykseni on ratkaistu tällä.
Vastaa
-
Aus sanoo
10. toukokuuta 2019 klo 15.04
paras vastaus verkossa, Opettaja ei selitä paskaa eikä siinä ole mitään järkeä, monotone mf. Näin selität käsitteet.
Vastaa
Jätä vastaus Peruuta vastaus
Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty
Kommentoi
Nimi
Sähköposti
Verkkosivusto
Suositellut viestit
Ero koronaviruksen ja vilustumisen oireiden välillä
Ero koronaviruksen ja SARSin välillä
Ero koronaviruksen ja influenssan välillä
Ero koronaviruksen ja Covid 19:n välillä
Saat pitää
Siperianhuskyn ja malamuutin ero
Calculus AB:n ja BC:n ero
Kaksoispääaineen ja tuplatutkinnon ero
Vaaleiden ja tummien paitojen siirtopaperin ero
välillä