- 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ä funktion 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 ajoaikana.
Tätä kutsutaan myöhäiseksi eli dynaamiseksi sitomiseksi. Myöhäinen sitominen mahdollistaa se, 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)