Tehtävä 2. (käsitteiden selitykset ilman esimerkkikoodeja) a) Ilmauksella super viitataan välittömän yliluokan ominaisuuteen (konstruktoriin, metodiin tai muuttujaan tai olioon itseensä yliluokkansa ilmentymänä). Viitattavan ominaisuuden on oltava public tai protected, private-tyyppisistä ominaisuuksista aliluokka ei tiedä mitään. super-ilmauksella päästään käsiksi peitettyihin yliluokan ominaisuuksiin aliluokasta. super(parametreja) on yliluokan konstruktorin kutsu, ja sen voi kirjoittaa aliluokassa vain konstruktorin ensimmäiseksi lauseeksi. Jos konstruktoriin ei sitä kirjoita, suoritetaan implisiittisesti yliluokan parametrittoman konstruktorin kutsu ennen aliluokan konstruktorin omaa algoritmia. Saman toiminnan saa itse aikaan laittamalla konstruktorin alkuun kutsun super(). b) Rajapintaluokka määrittelee joukon metodeja, jotka jokaisen rajapinnan toteuttavan luokan on tarjottava. Rajapintaluokka on tyyppi kuten muutkin luokat, ja sitä voi siis käyttää muuttujan tyyppinä, taulukon alkioiden tyyppinä tms. Tämän tyyppisen muuttujan arvoksi kelpaa mikä hyvänsä olio, joka on rajapinnan toteuttavan luokan ilmentymä. Polymorfismi tarkoittaa, että suoritettava metodi valitaan olion tyypin, ei muuttujan tyypin mukaan. Kurssilla esiteltiin mm. rajapinta Lypsava, joka määrittelee public double lypsa()-metodin: Lypsava tuotantoelain; ... double maito = tuotantoelain.lypsa(); ... Jos tuotantoelain-muuttujaan asetetaan Lehmä-olio, käytetään lypsa()-metodin kutsussa nimenomaan Lehmä-luokan versiota siitä. Jos muuttujaan taas asetetaan Tamma-olio, käytetään Tamma-luokan versiota lypsämisestä. Pisteytys: kummastakin kohdasta 0-8 pistettä erikseen sen mukaan, miten oikein käsitteiden selvitys oli, ja kuinka hyvin esimerkit havainnollistivat asiaa.