Lataa esitys
Esittely latautuu. Ole hyvä ja odota
JulkaistuSari Hakala Muutettu yli 9 vuotta sitten
1
Johdetun luokan määrittely tMyn1 Johdetun luokan määrittely •Kun johdettu luokka periytetään kantaluokasta, saadaan kantaluokan jäsenet enemmän tai vähemmän johdetun luokan käyttöön. •Kantaluokan jäsenen näkyvyys määritellään tyypillisesti joko private -, protected - tai public -saantimääreellä. •Käsitellään varatut sanat final ja abstract erikseen tämän kappaleen lopussa. •Muodostetaan taulukko, josta käy ilmi näkyvyyssäännön vaikutus, kuva 1.
2
Johdetun luokan määrittely tMyn2 kantaluokka jäsenen näkyvyyssääntö: public jäsenet protected jäsenet private jäsenet näkyvyys johdetussa luokassa: johdettu luokka public protected periytyy, mutta ei ole käytettävissä Kuva 1. Näkyvyyssäännön vaikutus.
3
Johdetun luokan määrittely tMyn3 •Perintä (inheritance) kantaluokasta määritellään varatulla sanalla extends, jossa kantaluokan ominaisuudet ja metodit peritään johdettuun luokkaan. •Johdetun luokan muodostinta toteutettaessa on muistettava, että sen rungossa pitää ensimmäiseksi kutsua kantaluokan muodostinta, jotta kaikki perityt tietojäsenet saavat halutun/vaaditun alustuksen. •Kantaluokan muodostimen kutsumisessa johdetun luokan muodostimesta käytetään varattua sanaa parent ja näkyvyysoperaattoria :: (scope resolution operator).
4
Johdetun luokan määrittely tMyn4 •Kuvasta 1 nähdään, että kantaluokan private - saantimääreellä esitelty jäsen pysyy private - tyyppisenä kantaluokalle. Käytännössä tämä tarkoittaa sitä, että private -tyyppiset kantaluokan jäsenet ovat private -tyyppisiä myös johdetulle luokalle. Tästä seuraa, että kantaluokan private - tyyppiset tietojäsenet eivät ole käytettävissä johdetun luokan jäsenfunktioille. Niitä voi siis käyttää ainoastaan määrittelemällä kantaluokkaan public - saantimääreellä jäsenfunktio. Tarkastellaan näitä asioita seuraavassa esimerkissä:
5
Johdetun luokan määrittely tMyn5
6
Johdetun luokan määrittely tMyn6
7
Johdetun luokan määrittely tMyn7
8
Johdetun luokan määrittely tMyn8
9
Johdetun luokan määrittely tMyn9 •Sitä vastoin jos kantaluokassa on public -tyyppinen jäsenfunktio, niin sitä voidaan käyttää johdetussa luokassa (esimerkiksi) kaiuttamaan näytölle kantaluokalta perityt private -tyyppiset tietojäsenet. •Muilta osin kaikki on saman tyyppisesti kuin mitä edellisessä esimerkissä:
10
Johdetun luokan määrittely tMyn10
11
Johdetun luokan määrittely tMyn11
12
Johdetun luokan määrittely tMyn12
13
Johdetun luokan määrittely tMyn13
14
Johdetun luokan määrittely tMyn14 •Jos kantaluokan jäsenen saantimääreenä on public tai protected, niin silloin johdetulle luokalle periytetty tietojäsen on myös tämän johdetun luokan jäsenfunktion käytettävissä. •Tiedon piilottamisen periaatteen mukaisesti kantaluokan tietojäsenten ei tulisi koskaan olla public -tyyppisiä. •Tehdään alkuperäiseen esimerkkiin se muutos, että asetetaan kantaluokan tietojäsenet protected - tyyppiseksi, muuten koodi on sama kuin ensimmäisessä esimerkissä:
15
Johdetun luokan määrittely tMyn15
16
Johdetun luokan määrittely tMyn16
17
Johdetun luokan määrittely tMyn17
18
Johdetun luokan määrittely tMyn18
19
Johdetun luokan määrittely tMyn19 •Nyt kun kantaluokan tietojäsenet ovat protected - tyyppisiä, voidaan tehdä seuraava muutos: korvataan (redefinition) kantaluokan jäsenfunktio sopivammalla toteutuksella johdetussa luokassa, siis sekä kantaluokassa että johdetussa luokassa on otsikkotiedoiltaan identtinen jäsenfunktio:
20
Johdetun luokan määrittely tMyn20
21
Johdetun luokan määrittely tMyn21
22
Johdetun luokan määrittely tMyn22
23
Johdetun luokan määrittely tMyn23
24
Johdetun luokan määrittely tMyn24 •Korvaamisessa (redefining) on se vaatimus, että johdetun luokan kohdalla korvattavan funktion otsikkotiedot on oltava täsmälleen samat kuin kantaluokassa. •Siis kun kantaluokassa jäsenfunktion saantimääreenä on public, niin sen pitää olla public myös johdetussa luokassa (jossa sen toteutus on tarkoitus korvata). Tehdään edelliseen esimerkkiin vain tämä saantimääremuutos johdettuun luokkaan:
25
Johdetun luokan määrittely tMyn25
26
Johdetun luokan määrittely tMyn26
27
Johdetun luokan määrittely tMyn27
28
Johdetun luokan määrittely tMyn28 •Leikitellään vielä hetki saantimääreellä protected. •Jos kantaluokan jäsenfunktion saantimääreenä on protected, niin se tarkoittaa sitä, että sitä voi kutsua saman luokan toinen jäsenfunktio tai johdetun luokan jäsenfunktio – eivät ketkään muut. •Sitä ei siis voi kutsua luokan ulkopuolelta. Siinä mielessä varattu sana protected on yhtä vahva kuin varattu sana private :
29
Johdetun luokan määrittely tMyn29
30
Johdetun luokan määrittely tMyn30
31
Johdetun luokan määrittely tMyn31
32
Johdetun luokan määrittely tMyn32
33
Johdetun luokan määrittely tMyn33 •Mutta voihan sitä kutsua toinen jäsenfunktio, seuraavassa esimerkissä johdetun luokan jäsenfunktio – käytetään täsmälleen äskeistä esimerkkiä kommentoimalla kaksi riviä. •Viittaaminen kantaluokan jäsenfunktioon onnistuisi myös käyttämällä varattua sanaa parent::, mutta nyt käytetään kantaluokan nimeä:
34
Johdetun luokan määrittely tMyn34
35
Johdetun luokan määrittely tMyn35
36
Johdetun luokan määrittely tMyn36 •Harvemmin (?) käytetty saantimääre on final. Tämä saantimääre jäsenfunktion kohdalla tarkoittaa sitä, että kyseistä jäsenfunktiota ei voida korvata (override) johdetussa luokassa:
37
Johdetun luokan määrittely tMyn37
38
Johdetun luokan määrittely tMyn38
39
Johdetun luokan määrittely tMyn39
40
Johdetun luokan määrittely tMyn40
41
Johdetun luokan määrittely tMyn41 •Jos käyttäisi final -saantimäärettä luokan kohdalla, niin se tarkoittaisi sitä, että kyseistä luokkaa ei pystyisi periyttämään. •Pidetään siis edellinen esimerkki muuten täsmälleen samana, mutta siirretään varattu sana final luokan Henkilo kohdalle:
42
Johdetun luokan määrittely tMyn42
43
Johdetun luokan määrittely tMyn43
Samankaltaiset esitykset
© 2023 SlidePlayer.fi Inc.
All rights reserved.