- COMP.CS.140
- 5. Periytyminen
- 5.2 Myöhäinen (dynaaminen) sitominen
Myöhäinen (dynaaminen) sitominen¶
Aliluokka voi halutessaan määrittää perimälleen funktiolle uuden toteutuksen.
C++:ssa mahdollisuus tähän tarjotaan määrittelemällä funktio kantaluokassa virtuaaliseksi (avainsana virtual
).
Javassa luokan rajapinnassa olevat funktiot ovat lähtökohtaisesti sellaisia, että aliluokka voi ne toteuttaa uudella, itselleen mielekkäällä tavalla.
Tästä ja polymorfismista seuraa se, että funktion kutsuttava toteutus voi löytyä alempaa periytymishierarkiasta.
Kääntäjä ei tällaisessa tilanteessa välttämättä pysty päättelemään, minkä luokan
toteutusta pitäisi kutsua vaan päätös tehdään vasta ohjelman ajon aikana.
Tätä kutsutaan myöhäiseksi eli dynaamiseksi sitomiseksi. Myöhäinen sitominen mahdollistaa sen, että sama funktiokutsun koodi voi kutsua eri luokan olioiden funktioita.
Funktiokutsu käyttäytyy eri tavalla riippuen siitä, minkä luokan oliolle sitä kutsuttiin.
Java käyttää myöhäistä sitomista kaikille julkisille luokan metodeille, joita ei ole merkitty finaleiksi.
Polymorfismi ja myöhäinen sitominen (kesto 9:49)