Ohjelmoinnin jatkokurssi: kurssikokeen 2. tehtävän ratkaisuehdotuksia
        Pisteiden jakautuminen: joka kohdasta 4p (a,b,c)
        a) seuraavista asioista pääosa mainittu
        
            - Aliluokka perii yliluokkansa metodit ja muuttujat (mutta privaatteihin kenttiin ei päästä käsiksi kuin public-metodeilla).
            
 - Aliluokalla on vain yksi yliluokka (mutta yliluokan
 yliluokka jne.), kun taas yliluokalla voi olla useita aliluokkia 
(joista se ei tiedä mitään).
 
            - Aliluokassa voidaan korvata eli syrjäyttää yliluokan metodeja.
 
        
        Periytymiseen liittyvistä asiavirheistä pisteitä pois vakavuuden mukaan, muista virheistä ei pisteitä pois, jos ovat vähäisiä.
        b) samoin kuin edellisessä, kaikkea ei tarvitse olla maininnut
        
            - Abstraktista luokasta tai rajapintaluokasta ei 
kummastakaan voi luoda ilmentymää. Voivat olla muuttujien tyyppeinä. 
Pakottavat korvaamaan metodeitaan.
 
            - Abstrakti luokka peritään (ja vain yksi voidaan periä), 
mutta rajapintaluokka toteutetaan (ja sama luokka voi toteuttaa useampia
 rajapintoja).
 
            - Abstraktissa luokassa voidaan toteuttaa toiminnallisuutta, kun taas rajapinta vain listaa toteutettavat metodit.
 
            - Hyvässä ratkaisussa on tehty selkeä ero näiden kahden 
asian välillä ja ehkä selitetty missä tilanteessa kumpaakin kannattaa 
käyttää.
 
            
        
        c)
        
            - Polymorfismi: syrjäytettävän metodin valinta menee olion
 tyypin, ei muuttujan tyypin mukaan. Esim. Elain kissa = new Kissa(); ja
 kutsuttaessa aantele()-metodia kissa.aantele(); käytetään Kissan, ei 
Elaimen aantele()-metodia.
 
        
        Koukkumetodi:
        public abstract class Kappale() {
              public abstract int pintaAla(); //KOUKKU
              public int tilavuus(int korkeus) {
                    return this.pintaAla()*korkeus;
              }
        }