Avainero – polymorfismi vs periytyminen OOP:ssa
OOP-ohjelmointia (Object-Oriented Programming) käytetään yleisesti ohjelmistojen kehittämiseen. Monet ohjelmointikielet tukevat olio-ohjelmointia. Olio-ohjelmointi on menetelmä ohjelman suunnittelemiseksi luokkien ja objektien avulla. OOP:n luokka on suunnitelma objektin luomiseksi. Luokassa on ominaisuuksia ja menetelmiä. Objekti on luokan esiintymä. OOP sisältää neljä pilaria, kuten perinnöllisyys, polymorfismi, abstraktio ja kapselointi. Tässä artikkelissa käsitellään polymorfismin ja periytymisen eroa OOP:ssa. Keskeinen ero OOP:n polymorfismin ja periytymisen välillä on, että polymorfismi on objektin kyky käyttäytyä useilla tavoilla, ja periytyminen on luoda uusi luokka käyttämällä olemassa olevan luokan ominaisuuksia ja menetelmiä.
Mitä OOP:n polymorfismi on?
Polymorfismilla tarkoitetaan useita muotoja. Yhdellä esineellä voi olla useita käyttäytymismalleja. Polymorfismi voidaan jakaa kahteen luokkaan. Ne ylikuormittavat ja ohittavat.
Ylikuormitus
Katso alla olevaa Java-kielellä kirjoitettua ohjelmaa.
Kuva 01: Ylikuormitus
Yllä olevan ohjelman mukaisesti luodaan A-tyypin objekti. Kutsuttaessa obj.sum(); se antaa menetelmään sum() liittyvän lähdön. Kutsuttaessa obj.sum(2, 3); se antaa tuloksen, joka liittyy summaan (int a, int b). Voidaan havaita, että sama kohde käyttäytyy eri tavalla tilanteesta riippuen. Kun useita menetelmiä on samalla nimellä, mutta eri parametreilla, sitä kutsutaan ylikuormitukseksi. Se tunnetaan myös nimellä staattinen sidonta tai käännösaikapolymorfismi.
Ohittava
Toisentyyppinen polymorfismi on ylivoimainen. Katso alla oleva Java-kielellä kirjoitettu ohjelma.
Kuva 02: Ohittaminen
Yllä olevan ohjelman mukaan luokassa A on method display()-menetelmä. Luokka B ulottuu luokasta A. Siksi kaikki luokan A menetelmät ovat luokan B käytettävissä. Se on periytymistä. Perinnön käsitettä kuvataan tarkemmin myöhemmin.
Luokalla B on myös sama display(). Kun luot A-tyypin objektia ja kutsut näyttömenetelmää, tulos antaa B:n. Luokan A näyttömenetelmä ohittaa luokan B näyttömenetelmän. Joten tulos on B.
Kun on menetelmiä, joilla on sama nimi ja samat parametrit, mutta kahdessa eri luokassa, ja ne on linkitetty periytyvästi, sitä kutsutaan ohitukseksi. Se tunnetaan myös nimellä Late side, Dynamic Binding, Runtime Polymorphism. Ylikuormitusta ja ohittamista kutsutaan polymorfismiksi. Se on tärkeä konsepti olioohjelmoinnissa.
Mitä OOP:n perintö on?
Katso alla olevaa Java-kielellä kirjoitettua ohjelmaa.
Kuva 03: Esimerkki perinnöstä
Yllä olevan ohjelman mukaan luokassa A on metodi sum() ja luokassa B on metodi sub().
Luokan A summa()-menetelmää voidaan käyttää luokassa B käyttämällä laajennusavainsanaa. Olemassa olevan luokan ominaisuuksien ja menetelmien uudelleenkäyttöä uuden luokan luomiseksi kutsutaan perintöksi. Edes luokassa B ei ole sum()-metodia; se on peritty luokasta A. Periytys on hyödyllistä koodin uudelleenkäytettävyyden kann alta. Vanhempaa luokkaa kutsutaan perusluokiksi, superluokiksi tai yläluokiksi. Johdettua luokkaa kutsutaan alaluokaksi tai alaluokaksi.
Perintötyypit
Perintöjä on erilaisia. Ne ovat yksitasoinen perintö, monitasoinen perintö, moniperintö, hierarkkinen perintö ja hybridiperintö.
Yksittäinen perintö
Single Heritancessa on yksi superluokka ja yksi alaluokka. Jos luokka A on superluokka ja luokka B on alaluokka, kaikki luokan A ominaisuudet ja menetelmät ovat luokan B käytettävissä. Tasoja on vain yksi; siksi sitä kutsutaan yksitasoiseksi perinnöksi.
Monitasoinen perintö
Monitasoisessa perinnössä on kolme luokkatasoa. Väliluokka periytyy superluokasta. Alaluokka periy väliluokan. Jos luokkia on kolme, kuten A, B ja C ja A on superluokka ja B on väliluokka. Sitten B perii A:lta ja C perii B:ltä, se on monitasoinen perintö.
Moniperintö
Multiple Heritancessa on monia superluokkia ja yksi alaluokka. Jos on kolme superluokkaa nimeltä A, B, C ja D on alaluokka, niin luokka D voi periytyä A:sta, B:stä ja C:stä. Multiple Heritance on tuettu ohjelmointikielessä C++. Sitä ei tueta ohjelmointikielissä, kuten Java tai C. Liitäntöjä käytetään moniperinnön toteuttamiseen näillä kielillä.
Hierarkkinen perintö
Jos superluokkia kutsutaan A-luokiksi ja B, C ovat alaluokkia, nämä alaluokat voivat periä luokan A ominaisuuksia ja menetelmiä. Tällaista periytymistyyppiä kutsutaan hierarkkiseksi periytymiseksi.
Hybridiperintö
On olemassa toinen erityinen periytymistyyppi, joka tunnetaan nimellä hybridiperintö. Se on monitasoisten ja useiden perintöjen yhdistelmä. Jos A, B, C ja D ovat luokkia ja B perii A:lta ja D perii sekä B:ltä että C:ltä, se on hybridiperintö.
Mitä yhtäläisyyksiä polymorfismin ja periytymisen välillä on OOP:ssa?
Molemmat ovat olio-ohjelmoinnin käsitteitä
Mitä eroa on polymorfismin ja periytymisen välillä OOP:ssa?
OOP:n polymorfismi vs periytyminen |
|
Polymorfismi on kohteen kykyä käyttäytyä monin tavoin. | Perinnöllä luodaan uusi luokka käyttämällä olemassa olevan luokan ominaisuuksia ja menetelmiä. |
Käyttö | |
Polymorfismia käytetään objekteille, jotka kutsuvat minkä muodon menetelmiä käännös- ja suoritusaikana. | Perintöä käytetään koodin uudelleenkäytettävyyteen. |
Toteutus | |
Polymorfismi toteutetaan menetelmissä. | Perintö on toteutettu luokissa. |
Luokat | |
Polymorfismi voidaan jakaa ylikuormitukseen ja ohittamiseen. | Perintö voidaan jakaa yksitasoiseen, monitasoiseen, hierarkkiseen, hybridi- ja moniperinnöön. |
Yhteenveto – OOP:n polymorfismi vs periytyminen
Polymorfismi ja periytyminen ovat tärkeitä käsitteitä olio-ohjelmoinnissa. Ero OOP:n polymorfismin ja periytymisen välillä on, että polymorfismi on yhteinen rajapinta useille muodoille ja perinnöllä luodaan uusi luokka käyttämällä olemassa olevan luokan ominaisuuksia ja menetelmiä. Molempia käsitteitä käytetään laajasti ohjelmistokehityksessä.
Lataa PDF:n polymorfismi vs periytyminen OOP:ssa
Voit ladata tämän artikkelin PDF-version ja käyttää sitä offline-tarkoituksiin lainaushuomautuksen mukaisesti. Lataa PDF-versio tästä Ero polymorfismin ja periytymisen välillä OOP