Tärkeä käsite olio-ohjelmoidussa ohjelmoinnissa on perintö. Se tarjoaa tien esineet määritellä suhteet toisiinsa. Kuten nimestä voi päätellä, esine pystyy perimään ominaisuuksia toiselta esineeltä.
Tarkemmin sanottuna esine pystyy siirtämään tilansa ja käyttäytymisensä lapsilleen. Jotta perintö toimisi, esineillä on oltava ominaisuudet, jotka ovat yhteisiä keskenään.
Sisään Jaava, luokkia voidaan ottaa muista luokista, mitä voidaan ottaa muilta, ja niin edelleen. Tämä johtuu siitä, että he voivat periä ominaisuuksia sen yläpuolella olevasta luokasta aina ylin Object -luokka.
Esimerkki Java-perinnöstä
Oletetaan, että teemme luokan nimeltä Ihminen, joka edustaa fyysisiä ominaisuuksiamme. Se on yleinen luokka, joka voi edustaa sinua, minua tai ketään muualla maailmassa. Sen tila pitää kirjaa asioista, kuten jalkojen lukumäärästä, aseiden lukumäärästä ja veriryhmästä. Sillä on käyttäytymistä kuten syö, nukku ja kävele.
Ihmisellä on hyvä saada ymmärrys siitä, mikä tekee meistä kaikista samanlaisia, mutta se ei esimerkiksi voi kertoa minulle sukupuolieroista. Sitä varten meidän on tehtävä kaksi uutta luokkatyyppiä nimeltään Mies ja Nainen. Näiden kahden luokan tila ja käyttäytyminen eroavat toisistaan monin tavoin paitsi ne, jotka ne perivät ihmiseltä.
Siksi periminen antaa meille mahdollisuuden kattaa vanhemman luokan tila ja käyttäytyminen lapsessaan. Lastenluokka voi sitten laajentaa tilaa ja käyttäytymistä heijastaakseen eroja, joita se edustaa. Tärkein osa tätä käsitettä muistaa on, että lastenluokka on vanhemman erikoistunut versio.
Mikä on superluokka?
Kahden objektin välisessä suhteessa superluokka on luokalle annettu nimi, jolta peritään. Se kuulostaa super duper-luokalta, mutta muista, että se on yleisempi versio. Parempia käytettäviä nimiä voi olla perusluokka tai yksinkertaisesti vanhempi luokka.
Ottaaksemme todellisemman esimerkin tällä kertaa, meillä voisi olla superluokka nimeltään Henkilö. Sen tilassa on henkilön nimi, osoite, pituus ja paino, ja siinä on käyttäytymistä kuten käydä ostoksilla, tehdä sänky ja katsella televisiota.
Voisimme tehdä kaksi uutta luokkaa, jotka perivät henkilöltä, nimeltään Opiskelija ja Työntekijä. Ne ovat erikoistuneempia versioita, koska vaikka heillä on nimiä, osoitteita, katsella televisiota ja käydä ostoksilla, niillä on myös ominaisuuksia, jotka eroavat toisistaan.
Työntekijällä voi olla valtio, jolla on toiminimi ja työpaikka, kun taas Opiskelijalla voi olla tietoja opintoalueesta ja oppilaitoksesta.
Superluokan esimerkki:
Kuvittele, että määrittelet henkilöluokan:
julkisen luokan henkilö. { }
Uusi luokka voidaan luoda laajentamalla tätä luokkaa:
julkisen luokan työntekijä laajentaa henkilöä. { }
Henkilöluokan sanotaan olevan Työntekijäluokan yliluokka.
Mikä on alaluokka?
Kahden objektin välisessä suhteessa alaluokka on luokalle annettu nimi, joka perii superluokasta. Vaikka se kuulostaa hiukan drabberilta, muista, että se on erikoisversio superluokasta.
Edellisessä esimerkissä alaluokat ovat Opiskelija ja Työntekijä.
Alaluokat voidaan kutsua myös johdettuiksi luokiksi, lasten luokiksi tai laajennetuiksi luokiksi.
Kuinka monta alaluokkaa minulla voi olla?
Voit olla niin monta alaluokkaa kuin haluat. Ei ole mitään rajoituksia siihen, kuinka monta alaluokkaa superluokalla voi olla. Samoin perintötasojen lukumäärää ei ole rajoitettu. Luokkahierarkia voidaan rakentaa tietylle alueelle, jolla on yhtenevyys.
Itse asiassa, jos tarkastelet Java API -kirjastoja, näet monia esimerkkejä perinnöstä. Jokainen sovellusliittymien luokka on peritty luokalta nimeltä java.lang. Esine. Esimerkiksi, kun käytät JFrame-objektia, olet pitkän perintörivin päässä:
java.lang. Esine. jatkaa java.awt. Komponentti. jatkaa java.awt. Astiaan. jatkaa java.awt. Ikkuna. jatkaa java.awt. Kehys. laajennettu javax.swing. JFrame.
Jaavassa, kun alaluokka perii superluokan, se tunnetaan "laajentavana" superluokkaa.
Voiko alaluokani periytyä monista superluokista?
Ei. Java-ohjelmassa alaluokka voi laajentaa vain yhden superluokan.
Miksi käyttää perintöä?
Perintö antaa ohjelmoijien käyttää uudelleen jo kirjoittamansa koodia. Ihmisluokka-esimerkissä meidän ei tarvitse luoda uusia kenttiä Mies- ja Naisluokassa veriryhmän pitämiseksi, koska voimme käyttää ihmisluokalta perittyä kenttää.
Toinen etu perinnöllisyyden käytöstä on, että se antaa meille mahdollisuuden kohdella alaluokkaa ikään kuin se olisi superluokka. Oletetaan esimerkiksi, että ohjelma on luonut useita esiintymiä Mies ja nainen -objekteista. Ohjelman on ehkä kutsuttava kaikkien näiden esineiden lepokäyttäytymistä. Koska unikäyttäytyminen on ihmisen yliluokan käyttäytymistä, voimme ryhmitellä kaikki miehen ja naisen esineet yhteen ja kohdella niitä ikään kuin ne olisivat ihmiskohtaisia esineitä.