Lecture overview -- Keyboard shortcut: 'u'  Previous page: Statisk og dynamisk binding i Java -- Keyboard shortcut: 'p'  Next page: Eksemplet uden dynamisk binding -- Keyboard shortcut: 'n'  Lecture notes - all slides and notes together  slide -- Keyboard shortcut: 't'  Help page about these notes  Alphabetic index  Course home  Play sound for this page -- Keyboard shortcut: 'y'  Page 31 : 41
Forelæsningsnoter i Objekt-orienteret Programmering
Nedarvning
Polymorfi og dynamisk binding i Banken

Vi viser her et eksempel på udnyttelse af klasserne Konto og CheckKonto, som illustrerer polymorfi

/user/normark/courses/prog1/prog1-01/sources/java/noteEksempler/Bank3.javaSuperklassen Konto.

Superklassen Konto.

/user/normark/courses/prog1/prog1-01/sources/java/noteEksempler/Bank3.javaSubklassen CheckKonto.

Subklassen CheckKonto.

class Bank3 {
 
   public static void main( String[] args ) {

     Konto[] konti = new Konto[5];

     konti[0] = new Konto("Peter");
     konti[1] = new CheckKonto("Jens");
     konti[2] = new CheckKonto("Børge");
     konti[3] = new CheckKonto("Carsten");
     konti[4] = new Konto("Kristen");

     konti[0].hæv(50);                      // Peter:    -50 (Konto)
     konti[1].indsæt(100.0);                // Jens:     100 (CheckKonto)
     konti[2].indsæt(200.0);                // Børge:    200 (CheckKonto)
     konti[3].indsæt(300.0);                // Carsten
     ((CheckKonto)konti[3]).hævCheck(500);  // Carsten: -300 (CheckKonto)
     konti[4].indsæt(400.0);                // Kristen:  400 (Konto)

     for(int i = 0; i < 5; i = i + 1){
       konti[i].tilskrivRente();
     }

     for(int i = 0; i < 5; i = i + 1){
        System.out.println(konti[i]);
     }

   }
} // end Bank3

Et hovedprogram som illustrerer dynamisk binding. Vi laver 5 konti, som lagres i et array. Vi udnytter polymorfien derved at arrayet kan referere både instanser af Konto og instanser af CheckKonto. Læg særligt mærke til rentetilskrivningen, som foregår i en for-løkke. Carsten's checkkonto får tilskrevet ubehagelig ågerrente, idet der er negativ saldo på kontoen. Den dynamiske binding søger for, at den 'rigtige' rentetilskrivningsoperation bliver kaldt på de enkelte konti. Udskrivningen af kontiene via toString metoden illustrerer også den dynamiske binding. Kør selv programmet, og verificer at der er tale om dynamisk binding af rentetilskrivningsoperationen.