DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige...
Transcript of DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige...
![Page 1: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/1.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
DM503Forelæsning 10
Thursday, December 16, 2010
![Page 2: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/2.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Indhold• Abstrakte klasser og metoder• Nedarvningsdetaljer
• Polymorfisme• Design med nedarvning for øje• Generics
Thursday, December 16, 2010
![Page 3: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/3.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Abstrakte klasser
Thursday, December 16, 2010
![Page 4: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/4.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Abstrakte klasser• En abstrakt klasse
Thursday, December 16, 2010
![Page 5: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/5.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Abstrakte klasser• En abstrakt klasse
• En almindelige klasse erklæret med abstract nøgleordetpublic abstract class MyClass {...}
Thursday, December 16, 2010
![Page 6: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/6.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Abstrakte klasser• En abstrakt klasse
• En almindelige klasse erklæret med abstract nøgleordetpublic abstract class MyClass {...}
• Der kan ikke laves instanser af klassen
Thursday, December 16, 2010
![Page 7: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/7.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Abstrakte klasser• En abstrakt klasse
• En almindelige klasse erklæret med abstract nøgleordetpublic abstract class MyClass {...}
• Der kan ikke laves instanser af klassen• Klassen kan indeholde abstrakte metoder
Thursday, December 16, 2010
![Page 8: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/8.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Abstrakte klasser• En abstrakt klasse
• En almindelige klasse erklæret med abstract nøgleordetpublic abstract class MyClass {...}
• Der kan ikke laves instanser af klassen• Klassen kan indeholde abstrakte metoder
• En abstrakt metode
Thursday, December 16, 2010
![Page 9: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/9.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Abstrakte klasser• En abstrakt klasse
• En almindelige klasse erklæret med abstract nøgleordetpublic abstract class MyClass {...}
• Der kan ikke laves instanser af klassen• Klassen kan indeholde abstrakte metoder
• En abstrakt metode• En metode erklæret med abstract nøgleordet
Thursday, December 16, 2010
![Page 10: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/10.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Abstrakte klasser• En abstrakt klasse
• En almindelige klasse erklæret med abstract nøgleordetpublic abstract class MyClass {...}
• Der kan ikke laves instanser af klassen• Klassen kan indeholde abstrakte metoder
• En abstrakt metode• En metode erklæret med abstract nøgleordet• Erklæret uden implementering
(uden tuborgklammer, med semicolon)public abstract void myfunc(...);
Thursday, December 16, 2010
![Page 11: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/11.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Abstrakte klasser• En abstrakt klasse
• En almindelige klasse erklæret med abstract nøgleordetpublic abstract class MyClass {...}
• Der kan ikke laves instanser af klassen• Klassen kan indeholde abstrakte metoder
• En abstrakt metode• En metode erklæret med abstract nøgleordet• Erklæret uden implementering
(uden tuborgklammer, med semicolon)public abstract void myfunc(...);
• Hvis en klasse indeholder en abstrakt metode skal klassen også være abstrakt
Thursday, December 16, 2010
![Page 12: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/12.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Abstrakte klasser• En abstrakt klasse
• En almindelige klasse erklæret med abstract nøgleordetpublic abstract class MyClass {...}
• Der kan ikke laves instanser af klassen• Klassen kan indeholde abstrakte metoder
• En abstrakt metode• En metode erklæret med abstract nøgleordet• Erklæret uden implementering
(uden tuborgklammer, med semicolon)public abstract void myfunc(...);
• Hvis en klasse indeholder en abstrakt metode skal klassen også være abstrakt• (Det omvendte behøver ikke være tilfældet)
Thursday, December 16, 2010
![Page 13: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/13.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Abstrakte klasser
Thursday, December 16, 2010
![Page 14: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/14.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Abstrakte klasser• Hvad kan vi nu bruge det til?!?
Thursday, December 16, 2010
![Page 15: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/15.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Abstrakte klasser• Hvad kan vi nu bruge det til?!?• Minder lidt om et interface
Thursday, December 16, 2010
![Page 16: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/16.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Abstrakte klasser• Hvad kan vi nu bruge det til?!?• Minder lidt om et interface
• Kan dog indeholde ikke abstrakte metoder(altså metoder med en implementering)
Thursday, December 16, 2010
![Page 17: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/17.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Abstrakte klasser• Hvad kan vi nu bruge det til?!?• Minder lidt om et interface
• Kan dog indeholde ikke abstrakte metoder(altså metoder med en implementering)
• Kan indeholde variable som ikke er konstanter
Thursday, December 16, 2010
![Page 18: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/18.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Abstrakte klasser• Hvad kan vi nu bruge det til?!?• Minder lidt om et interface
• Kan dog indeholde ikke abstrakte metoder(altså metoder med en implementering)
• Kan indeholde variable som ikke er konstanter• Tænk på en klasse der ikke er helt færdig
Thursday, December 16, 2010
![Page 19: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/19.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Abstrakte klasser• Hvad kan vi nu bruge det til?!?• Minder lidt om et interface
• Kan dog indeholde ikke abstrakte metoder(altså metoder med en implementering)
• Kan indeholde variable som ikke er konstanter• Tænk på en klasse der ikke er helt færdig
• Kan indeholde noget
Thursday, December 16, 2010
![Page 20: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/20.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Abstrakte klasser• Hvad kan vi nu bruge det til?!?• Minder lidt om et interface
• Kan dog indeholde ikke abstrakte metoder(altså metoder med en implementering)
• Kan indeholde variable som ikke er konstanter• Tænk på en klasse der ikke er helt færdig
• Kan indeholde noget• Men mangler andet
Thursday, December 16, 2010
![Page 21: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/21.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Abstrakte klasser• Hvad kan vi nu bruge det til?!?• Minder lidt om et interface
• Kan dog indeholde ikke abstrakte metoder(altså metoder med en implementering)
• Kan indeholde variable som ikke er konstanter• Tænk på en klasse der ikke er helt færdig
• Kan indeholde noget• Men mangler andet• Klasser der nedarver fra en abstrakt klasse kan så
udfylde manglerne
Thursday, December 16, 2010
![Page 22: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/22.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Abstrakte klasser• Hvad kan vi nu bruge det til?!?• Minder lidt om et interface
• Kan dog indeholde ikke abstrakte metoder(altså metoder med en implementering)
• Kan indeholde variable som ikke er konstanter• Tænk på en klasse der ikke er helt færdig
• Kan indeholde noget• Men mangler andet• Klasser der nedarver fra en abstrakt klasse kan så
udfylde manglerne• Oftest et abstrakt koncept (deraf navnet)
Thursday, December 16, 2010
![Page 23: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/23.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Abstrakte klasser• Hvad kan vi nu bruge det til?!?• Minder lidt om et interface
• Kan dog indeholde ikke abstrakte metoder(altså metoder med en implementering)
• Kan indeholde variable som ikke er konstanter• Tænk på en klasse der ikke er helt færdig
• Kan indeholde noget• Men mangler andet• Klasser der nedarver fra en abstrakt klasse kan så
udfylde manglerne• Oftest et abstrakt koncept (deraf navnet)
• Eksempel...
Thursday, December 16, 2010
![Page 24: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/24.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
public abstract class Shape {! int x, y;
! public void setPosition(int x, int y) {! ! this.x = x;! ! this.y = y;! }
! public abstract void draw();
! public abstract void resize(int size);}
Abstrakte klasser
Thursday, December 16, 2010
![Page 25: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/25.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
public class Circle extends Shape {! int diameter;
! public Circle(int diameter) {! ! this.diameter = diameter;! ! setPosition(0, 0);! }
! public void draw() {! ! // Do some drawing! }
! public void resize(int size) {! ! diameter = size;! ! draw();! }}
Abstrakte klasser
Thursday, December 16, 2010
![Page 26: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/26.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
public class Square extends Shape {! int side;
! public Square(int side) {! ! this.side = side;! ! setPosition(0, 0);! }
! public void draw() {! ! // Do some drawing! }
! public void resize(int size) {! ! side = size;! ! draw();! }}
Abstrakte klasser
Thursday, December 16, 2010
![Page 27: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/27.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Abstrakte klasser• Abstrakte klasser (og metoder)
• Mulighed for at angive delvist koncept• Kan udvides (læs: nedarves) til flere konkrete koncepter• Samler al den fælles funktionalitet i en fælles klasse
(kodegenbrug)
Thursday, December 16, 2010
![Page 28: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/28.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer
Thursday, December 16, 2010
![Page 29: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/29.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer• Det er muligt at undersøge om et objekt er en instans af
en given klasse
Thursday, December 16, 2010
![Page 30: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/30.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer• Det er muligt at undersøge om et objekt er en instans af
en given klasse• obj instanseof Class
Thursday, December 16, 2010
![Page 31: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/31.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer• Det er muligt at undersøge om et objekt er en instans af
en given klasse• obj instanseof Class
• true hvis obj er en instans af klassen Class
Thursday, December 16, 2010
![Page 32: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/32.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer• Det er muligt at undersøge om et objekt er en instans af
en given klasse• obj instanseof Class
• true hvis obj er en instans af klassen Class• true hvis obj er en instans af en underklasse til Class
Thursday, December 16, 2010
![Page 33: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/33.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer• Det er muligt at undersøge om et objekt er en instans af
en given klasse• obj instanseof Class
• true hvis obj er en instans af klassen Class• true hvis obj er en instans af en underklasse til Class• false ellers
Thursday, December 16, 2010
![Page 34: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/34.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer• Det er muligt at undersøge om et objekt er en instans af
en given klasse• obj instanseof Class
• true hvis obj er en instans af klassen Class• true hvis obj er en instans af en underklasse til Class• false ellers
• Eksempel...
Thursday, December 16, 2010
![Page 35: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/35.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
public class Car {// En bil
}
Nedarvningsdetaljer
Thursday, December 16, 2010
![Page 36: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/36.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
public class Car {// En bil
}
Nedarvningsdetaljer
public class Audi extends Car {// En Audi
}
Thursday, December 16, 2010
![Page 37: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/37.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
public class Car {// En bil
}
Nedarvningsdetaljer
public class Audi extends Car {// En Audi
}
public class Skoda extends Car {// En Skoda
}
Thursday, December 16, 2010
![Page 38: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/38.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
public class Car {// En bil
}
Nedarvningsdetaljer
public class Audi extends Car {// En Audi
}
public class Skoda extends Car {// En Skoda
}
public class Main {! public static void main(String[] args) {! ! Audi bil1 = new Audi();! ! Skoda bil2 = new Skoda();
! ! checkType(bil1);! }
Thursday, December 16, 2010
![Page 39: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/39.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
public class Car {// En bil
}
Nedarvningsdetaljer
public class Audi extends Car {// En Audi
}
public class Skoda extends Car {// En Skoda
}
public class Main {! public static void main(String[] args) {! ! Audi bil1 = new Audi();! ! Skoda bil2 = new Skoda();
! ! checkType(bil1);! }
! public static void checkType(Car bil) {! ! if (bil instanceof Car) {! ! ! System.out.println("bil er en Car ");! ! }! ! if (bil instanceof Audi) {! ! ! System.out.println("bil er en Audi");! ! } else if (bil instanceof Skoda) {! ! ! System.out.println("bil er en Skoda");! ! }! }}
Thursday, December 16, 2010
![Page 40: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/40.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
public class Car {// En bil
}
Nedarvningsdetaljer
public class Audi extends Car {// En Audi
}
public class Skoda extends Car {// En Skoda
}
public class Main {! public static void main(String[] args) {! ! Audi bil1 = new Audi();! ! Skoda bil2 = new Skoda();
! ! checkType(bil1);! }
! public static void checkType(Car bil) {! ! if (bil instanceof Car) {! ! ! System.out.println("bil er en Car ");! ! }! ! if (bil instanceof Audi) {! ! ! System.out.println("bil er en Audi");! ! } else if (bil instanceof Skoda) {! ! ! System.out.println("bil er en Skoda");! ! }! }}
Thursday, December 16, 2010
![Page 41: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/41.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
public class Car {// En bil
}
Nedarvningsdetaljer
public class Audi extends Car {// En Audi
}
public class Skoda extends Car {// En Skoda
}
public class Main {! public static void main(String[] args) {! ! Audi bil1 = new Audi();! ! Skoda bil2 = new Skoda();
! ! checkType(bil2);! }
! public static void checkType(Car bil) {! ! if (bil instanceof Car) {! ! ! System.out.println("bil er en Car ");! ! }! ! if (bil instanceof Audi) {! ! ! System.out.println("bil er en Audi");! ! } else if (bil instanceof Skoda) {! ! ! System.out.println("bil er en Skoda");! ! }! }}
Thursday, December 16, 2010
![Page 42: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/42.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
public class Car {// En bil
}
Nedarvningsdetaljer
public class Audi extends Car {// En Audi
}
public class Skoda extends Car {// En Skoda
}
public class Main {! public static void main(String[] args) {! ! Audi bil1 = new Audi();! ! Skoda bil2 = new Skoda();
! ! checkType(bil2);! }
! public static void checkType(Car bil) {! ! if (bil instanceof Car) {! ! ! System.out.println("bil er en Car ");! ! }! ! if (bil instanceof Audi) {! ! ! System.out.println("bil er en Audi");! ! } else if (bil instanceof Skoda) {! ! ! System.out.println("bil er en Skoda");! ! }! }}
Thursday, December 16, 2010
![Page 43: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/43.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer• Forkert brug af instanceof
Thursday, December 16, 2010
![Page 44: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/44.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer• Forkert brug af instanceof
public class Car {! private double mileage;
! public Car() {! ! mileage = 0;! }
! public void drive(double dist) {! ! if (this instanceof Audi) {! ! ! System.out.println("An Audi is driving: " + dist);! ! } else if (this instanceof Skoda) {! ! ! System.out.println("A Skoda is driving: " + dist);! ! }! ! mileage = mileage + dist;! }}
Thursday, December 16, 2010
![Page 45: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/45.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer• Korrekt (og uden brug af instanceof):
Thursday, December 16, 2010
![Page 46: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/46.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer• Korrekt (og uden brug af instanceof):
public class Car {! private double mileage;
! public Car() {! ! mileage = 0;! }
! public void drive(double dist) {! ! mileage = mileage + dist;! }}
Thursday, December 16, 2010
![Page 47: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/47.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer• Korrekt (og uden brug af instanceof):
public class Car {! private double mileage;
! public Car() {! ! mileage = 0;! }
! public void drive(double dist) {! ! mileage = mileage + dist;! }}
public class Audi extends Car {! public void drive(double dist) {! ! System.out.println("An Audi is driving: " + dist);! ! super.drive(dist);! }}
Thursday, December 16, 2010
![Page 48: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/48.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer• Korrekt (og uden brug af instanceof):
public class Car {! private double mileage;
! public Car() {! ! mileage = 0;! }
! public void drive(double dist) {! ! mileage = mileage + dist;! }}
public class Audi extends Car {! public void drive(double dist) {! ! System.out.println("An Audi is driving: " + dist);! ! super.drive(dist);! }}
public class Skoda extends Car {! public void drive(double dist) {! ! System.out.println("A Skoda is driving: " + dist);! ! super.drive(dist);! }}
Thursday, December 16, 2010
![Page 49: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/49.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer
Thursday, December 16, 2010
![Page 50: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/50.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer• Der gik faktisk mere for sig...
Thursday, December 16, 2010
![Page 51: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/51.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer• Der gik faktisk mere for sig...• Var der nogen der bemærkede hvordan en Audi/Skoda
kunne bruges som en Car?
Thursday, December 16, 2010
![Page 52: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/52.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer• Der gik faktisk mere for sig...• Var der nogen der bemærkede hvordan en Audi/Skoda
kunne bruges som en Car?• public class Main {
! public static void main(String[] args) {! ! Audi bil1 = new Audi();
! ! Skoda bil2 = new Skoda();
! ! checkType(bil2);! }
! public static void checkType(Car bil) {...
! }}
Thursday, December 16, 2010
![Page 53: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/53.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer• Der gik faktisk mere for sig...• Var der nogen der bemærkede hvordan en Audi/Skoda
kunne bruges som en Car?•
• Husk at når Skoda nedarver fra Car, så er Skoda en Car!
public class Main {! public static void main(String[] args) {! ! Audi bil1 = new Audi();
! ! Skoda bil2 = new Skoda();
! ! checkType(bil2);! }
! public static void checkType(Car bil) {...
! }}
Thursday, December 16, 2010
![Page 54: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/54.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer• Der gik faktisk mere for sig...• Var der nogen der bemærkede hvordan en Audi/Skoda
kunne bruges som en Car?•
• Husk at når Skoda nedarver fra Car, så er Skoda en Car!•
public class Main {! public static void main(String[] args) {! ! Audi bil1 = new Audi();
! ! Skoda bil2 = new Skoda();
! ! checkType(bil2);! }
! public static void checkType(Car bil) {...
! }}
public class Main {! public static void main(String[] args) {! ! Skoda bil2 = new Skoda();! ! Car bil;! ! bil = bil2;! }}
Thursday, December 16, 2010
![Page 55: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/55.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer
Thursday, December 16, 2010
![Page 56: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/56.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer• Polymorfisme
Thursday, December 16, 2010
![Page 57: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/57.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer• Polymorfisme
• Konceptet at en variabel kan refererer til objekter af flere forskellige typer
Thursday, December 16, 2010
![Page 58: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/58.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer• Polymorfisme
• Konceptet at en variabel kan refererer til objekter af flere forskellige typer
• Polymorfisme ved nedarvning
Thursday, December 16, 2010
![Page 59: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/59.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer• Polymorfisme
• Konceptet at en variabel kan refererer til objekter af flere forskellige typer
• Polymorfisme ved nedarvning• Car bil;
bil = new Audi();bil = new Skoda();
Thursday, December 16, 2010
![Page 60: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/60.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer• Polymorfisme
• Konceptet at en variabel kan refererer til objekter af flere forskellige typer
• Polymorfisme ved nedarvning• Car bil;
bil = new Audi();bil = new Skoda();
• Polymorfisme ved brug af interfaces
Thursday, December 16, 2010
![Page 61: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/61.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Nedarvningsdetaljer• Polymorfisme
• Konceptet at en variabel kan refererer til objekter af flere forskellige typer
• Polymorfisme ved nedarvning• Car bil;
bil = new Audi();bil = new Skoda();
• Polymorfisme ved brug af interfaces• Comparable c;
c = new Integer(10);c = new Double(12.3);
Thursday, December 16, 2010
![Page 62: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/62.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Design med nedarvning for øje
Thursday, December 16, 2010
![Page 63: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/63.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Design med nedarvning for øje• Nedarvning skal overholde et “er en”-forhold
Thursday, December 16, 2010
![Page 64: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/64.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Design med nedarvning for øje• Nedarvning skal overholde et “er en”-forhold
• Underklassen skal være en mere specifik version
Thursday, December 16, 2010
![Page 65: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/65.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Design med nedarvning for øje• Nedarvning skal overholde et “er en”-forhold
• Underklassen skal være en mere specifik version• Design dit klassehierarki så det øger genbrug af kode
Thursday, December 16, 2010
![Page 66: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/66.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Design med nedarvning for øje• Nedarvning skal overholde et “er en”-forhold
• Underklassen skal være en mere specifik version• Design dit klassehierarki så det øger genbrug af kode
• Også potentielt fremtidigt genbrug af kode
Thursday, December 16, 2010
![Page 67: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/67.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Design med nedarvning for øje• Nedarvning skal overholde et “er en”-forhold
• Underklassen skal være en mere specifik version• Design dit klassehierarki så det øger genbrug af kode
• Også potentielt fremtidigt genbrug af kode• Put ens funktionalitet i en fælles forældreklasse
Thursday, December 16, 2010
![Page 68: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/68.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Design med nedarvning for øje• Nedarvning skal overholde et “er en”-forhold
• Underklassen skal være en mere specifik version• Design dit klassehierarki så det øger genbrug af kode
• Også potentielt fremtidigt genbrug af kode• Put ens funktionalitet i en fælles forældreklasse• Skub ens funktionalitet så højt i klassehierarkiet som
muligt
Thursday, December 16, 2010
![Page 69: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/69.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Design med nedarvning for øje• Nedarvning skal overholde et “er en”-forhold
• Underklassen skal være en mere specifik version• Design dit klassehierarki så det øger genbrug af kode
• Også potentielt fremtidigt genbrug af kode• Put ens funktionalitet i en fælles forældreklasse• Skub ens funktionalitet så højt i klassehierarkiet som
muligt• Overskriv metoder i underklasser så det passer til klassen
Thursday, December 16, 2010
![Page 70: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/70.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Design med nedarvning for øje• Nedarvning skal overholde et “er en”-forhold
• Underklassen skal være en mere specifik version• Design dit klassehierarki så det øger genbrug af kode
• Også potentielt fremtidigt genbrug af kode• Put ens funktionalitet i en fælles forældreklasse• Skub ens funktionalitet så højt i klassehierarkiet som
muligt• Overskriv metoder i underklasser så det passer til klassen• Tilføj nye variable til underklasser men overskriv (shadow)
aldrig nedarvede variable
Thursday, December 16, 2010
![Page 71: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/71.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Design med nedarvning for øje• Nedarvning skal overholde et “er en”-forhold
• Underklassen skal være en mere specifik version• Design dit klassehierarki så det øger genbrug af kode
• Også potentielt fremtidigt genbrug af kode• Put ens funktionalitet i en fælles forældreklasse• Skub ens funktionalitet så højt i klassehierarkiet som
muligt• Overskriv metoder i underklasser så det passer til klassen• Tilføj nye variable til underklasser men overskriv (shadow)
aldrig nedarvede variable• Lad hver klasse håndtere sine egne variable
Thursday, December 16, 2010
![Page 72: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/72.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Design med nedarvning for øje• Nedarvning skal overholde et “er en”-forhold
• Underklassen skal være en mere specifik version• Design dit klassehierarki så det øger genbrug af kode
• Også potentielt fremtidigt genbrug af kode• Put ens funktionalitet i en fælles forældreklasse• Skub ens funktionalitet så højt i klassehierarkiet som
muligt• Overskriv metoder i underklasser så det passer til klassen• Tilføj nye variable til underklasser men overskriv (shadow)
aldrig nedarvede variable• Lad hver klasse håndtere sine egne variable
• Brug super til at tilgå forældre-constructoren
Thursday, December 16, 2010
![Page 73: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/73.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Design med nedarvning for øje• Nedarvning skal overholde et “er en”-forhold
• Underklassen skal være en mere specifik version• Design dit klassehierarki så det øger genbrug af kode
• Også potentielt fremtidigt genbrug af kode• Put ens funktionalitet i en fælles forældreklasse• Skub ens funktionalitet så højt i klassehierarkiet som
muligt• Overskriv metoder i underklasser så det passer til klassen• Tilføj nye variable til underklasser men overskriv (shadow)
aldrig nedarvede variable• Lad hver klasse håndtere sine egne variable
• Brug super til at tilgå forældre-constructoren• Brug super til at tilgå metoder på forældren
Thursday, December 16, 2010
![Page 74: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/74.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Design med nedarvning for øje
Thursday, December 16, 2010
![Page 75: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/75.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Design med nedarvning for øje• Brug interfaces hvis en klasse skal have to eller flere roller
(simuler multipel nedarvning)
Thursday, December 16, 2010
![Page 76: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/76.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Design med nedarvning for øje• Brug interfaces hvis en klasse skal have to eller flere roller
(simuler multipel nedarvning)• Overskriv altid generelle metoder som toString og equals
Thursday, December 16, 2010
![Page 77: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/77.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Design med nedarvning for øje• Brug interfaces hvis en klasse skal have to eller flere roller
(simuler multipel nedarvning)• Overskriv altid generelle metoder som toString og equals• Brug abstrakte klasser til at beskrive klasser længere nede i
hierarkiet
Thursday, December 16, 2010
![Page 78: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/78.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Design med nedarvning for øje• Brug interfaces hvis en klasse skal have to eller flere roller
(simuler multipel nedarvning)• Overskriv altid generelle metoder som toString og equals• Brug abstrakte klasser til at beskrive klasser længere nede i
hierarkiet• Brug private, protected, public på fornuftig vis
Thursday, December 16, 2010
![Page 79: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/79.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Design med nedarvning for øje• Brug interfaces hvis en klasse skal have to eller flere roller
(simuler multipel nedarvning)• Overskriv altid generelle metoder som toString og equals• Brug abstrakte klasser til at beskrive klasser længere nede i
hierarkiet• Brug private, protected, public på fornuftig vis
• Indkapsling af data
Thursday, December 16, 2010
![Page 80: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/80.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Design med nedarvning for øje• Brug interfaces hvis en klasse skal have to eller flere roller
(simuler multipel nedarvning)• Overskriv altid generelle metoder som toString og equals• Brug abstrakte klasser til at beskrive klasser længere nede i
hierarkiet• Brug private, protected, public på fornuftig vis
• Indkapsling af data• Adgang for underklasser
Thursday, December 16, 2010
![Page 81: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/81.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics
Thursday, December 16, 2010
![Page 82: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/82.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lad os starte med et motiverende eksempel :-)
Thursday, December 16, 2010
![Page 83: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/83.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lad os starte med et motiverende eksempel :-)• Vi vil lave en kasse som vi kan komme ting ned i og
tage ud igen
Thursday, December 16, 2010
![Page 84: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/84.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lad os starte med et motiverende eksempel :-)• Vi vil lave en kasse som vi kan komme ting ned i og
tage ud igen• Vi vil gerne have at kassen skal kun gemme hvad som
helst
Thursday, December 16, 2010
![Page 85: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/85.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lad os starte med et motiverende eksempel :-)• Vi vil lave en kasse som vi kan komme ting ned i og
tage ud igen• Vi vil gerne have at kassen skal kun gemme hvad som
helst• Hmm ... alle klasser nedarver fra Object
Thursday, December 16, 2010
![Page 86: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/86.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
public class Box {! private Object object;
! public void add(Object object) {! ! this.object = object;! }
! public Object get() {! ! return object;! }}
Generics
Thursday, December 16, 2010
![Page 87: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/87.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
public class Box {! private Object object;
! public void add(Object object) {! ! this.object = object;! }
! public Object get() {! ! return object;! }}
Generics
public class Main {! public static void main(String[] args) {! ! // ONLY place Integer objects into this box!! ! Box integerBox = new Box();
! ! integerBox.add(new Integer(10));! ! Integer someInteger = (Integer) integerBox.get();! ! System.out.println(someInteger);! }}
Thursday, December 16, 2010
![Page 88: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/88.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
public class Box {! private Object object;
! public void add(Object object) {! ! this.object = object;! }
! public Object get() {! ! return object;! }}
Generics
public class Main {! public static void main(String[] args) {! ! // ONLY place Integer objects into this box!! ! Box integerBox = new Box();
! ! integerBox.add(new Integer(10));! ! Integer someInteger = (Integer) integerBox.get();! ! System.out.println(someInteger);! }}
Thursday, December 16, 2010
![Page 89: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/89.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
public class Box {! private Object object;
! public void add(Object object) {! ! this.object = object;! }
! public Object get() {! ! return object;! }}
Generics
public class Main {! public static void main(String[] args) {! ! // ONLY place Integer objects into this box!! ! Box integerBox = new Box();
! ! // Imagine this is one part of a large application! ! integerBox.add("10"); // note how the type is now String
! ! Integer someInteger = (Integer) integerBox.get();! ! System.out.println(someInteger);! }}
Thursday, December 16, 2010
![Page 90: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/90.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
public class Box {! private Object object;
! public void add(Object object) {! ! this.object = object;! }
! public Object get() {! ! return object;! }}
Generics
public class Main {! public static void main(String[] args) {! ! // ONLY place Integer objects into this box!! ! Box integerBox = new Box();
! ! // Imagine this is one part of a large application! ! integerBox.add("10"); // note how the type is now String
! ! Integer someInteger = (Integer) integerBox.get();! ! System.out.println(someInteger);! }}
Thursday, December 16, 2010
![Page 91: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/91.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics
Thursday, December 16, 2010
![Page 92: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/92.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Hvad er problemet?
Thursday, December 16, 2010
![Page 93: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/93.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Hvad er problemet?
• Vi har lavet en mundtlig “kontrakt” som ikke bliver overholdt
Thursday, December 16, 2010
![Page 94: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/94.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Hvad er problemet?
• Vi har lavet en mundtlig “kontrakt” som ikke bliver overholdt
• Java kan ikke tjekke den slags kontrakter for os
Thursday, December 16, 2010
![Page 95: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/95.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Hvad er problemet?
• Vi har lavet en mundtlig “kontrakt” som ikke bliver overholdt
• Java kan ikke tjekke den slags kontrakter for os• Bemærk
Thursday, December 16, 2010
![Page 96: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/96.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Hvad er problemet?
• Vi har lavet en mundtlig “kontrakt” som ikke bliver overholdt
• Java kan ikke tjekke den slags kontrakter for os• Bemærk
• Koden kompiler stadig korrekt
Thursday, December 16, 2010
![Page 97: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/97.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Hvad er problemet?
• Vi har lavet en mundtlig “kontrakt” som ikke bliver overholdt
• Java kan ikke tjekke den slags kontrakter for os• Bemærk
• Koden kompiler stadig korrekt• Fejlen sker først på runtime
Thursday, December 16, 2010
![Page 98: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/98.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Hvad er problemet?
• Vi har lavet en mundtlig “kontrakt” som ikke bliver overholdt
• Java kan ikke tjekke den slags kontrakter for os• Bemærk
• Koden kompiler stadig korrekt• Fejlen sker først på runtime
• Hvad gør vi så...
Thursday, December 16, 2010
![Page 99: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/99.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Hvad er problemet?
• Vi har lavet en mundtlig “kontrakt” som ikke bliver overholdt
• Java kan ikke tjekke den slags kontrakter for os• Bemærk
• Koden kompiler stadig korrekt• Fejlen sker først på runtime
• Hvad gør vi så...• ... og ind kommer Generics som en redning
Thursday, December 16, 2010
![Page 100: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/100.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Hvad er problemet?
• Vi har lavet en mundtlig “kontrakt” som ikke bliver overholdt
• Java kan ikke tjekke den slags kontrakter for os• Bemærk
• Koden kompiler stadig korrekt• Fejlen sker først på runtime
• Hvad gør vi så...• ... og ind kommer Generics som en redning
• En måde at angive datatyper på i Java
Thursday, December 16, 2010
![Page 101: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/101.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Hvad er problemet?
• Vi har lavet en mundtlig “kontrakt” som ikke bliver overholdt
• Java kan ikke tjekke den slags kontrakter for os• Bemærk
• Koden kompiler stadig korrekt• Fejlen sker først på runtime
• Hvad gør vi så...• ... og ind kommer Generics som en redning
• En måde at angive datatyper på i Java• Typer kan også være variable i Java
Thursday, December 16, 2010
![Page 102: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/102.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Hvad er problemet?
• Vi har lavet en mundtlig “kontrakt” som ikke bliver overholdt
• Java kan ikke tjekke den slags kontrakter for os• Bemærk
• Koden kompiler stadig korrekt• Fejlen sker først på runtime
• Hvad gør vi så...• ... og ind kommer Generics som en redning
• En måde at angive datatyper på i Java• Typer kan også være variable i Java
• Bedst illustreret med et eksempel...
Thursday, December 16, 2010
![Page 103: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/103.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }}
Generics
Thursday, December 16, 2010
![Page 104: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/104.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }}
Generics
Thursday, December 16, 2010
![Page 105: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/105.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }}
Generics
public class Main {! public static void main(String[] args) {! ! Box<Integer> integerBox = new Box<Integer>();
! ! integerBox.add(new Integer(10));
! ! Integer someInteger = integerBox.get(); // no cast!
! ! System.out.println(someInteger);! }}
Thursday, December 16, 2010
![Page 106: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/106.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }}
Generics
public class Main {! public static void main(String[] args) {
! ! Box<Integer> integerBox = new Box<Integer>();
! ! integerBox.add(new Integer(10));
! ! Integer someInteger = integerBox.get(); // no cast!
! ! System.out.println(someInteger);! }}
Thursday, December 16, 2010
![Page 107: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/107.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }}
Generics
public class Main {! public static void main(String[] args) {! ! Box<Integer> integerBox = new Box<Integer>();
! ! integerBox.add(new Integer(10));
! ! Integer someInteger = integerBox.get(); // no cast!
! ! System.out.println(someInteger);! }}
Thursday, December 16, 2010
![Page 108: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/108.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }}
Generics
public class Main {! public static void main(String[] args) {! ! Box<Integer> integerBox = new Box<Integer>();
! ! integerBox.add("10");
! ! Integer someInteger = integerBox.get(); // no cast!
! ! System.out.println(someInteger);! }}
Thursday, December 16, 2010
![Page 109: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/109.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }}
Generics
public class Main {! public static void main(String[] args) {! ! Box<Integer> integerBox = new Box<Integer>();
! ! integerBox.add("10");
! ! Integer someInteger = integerBox.get(); // no cast!
! ! System.out.println(someInteger);! }}
Thursday, December 16, 2010
![Page 110: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/110.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }}
Generics
public class Main {! public static void main(String[] args) {! ! Box<Integer> integerBox = new Box<Integer>();
! ! integerBox.add("10");
! ! Integer someInteger = integerBox.get(); // no cast!
! ! System.out.println(someInteger);! }}
Thursday, December 16, 2010
![Page 111: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/111.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics
Thursday, December 16, 2010
![Page 112: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/112.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt notation
Thursday, December 16, 2010
![Page 113: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/113.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt notation
• Box kaldes en parametriseret type (eller generisk type)
Thursday, December 16, 2010
![Page 114: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/114.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt notation
• Box kaldes en parametriseret type (eller generisk type)• T kaldes en type-variabel
Thursday, December 16, 2010
![Page 115: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/115.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt notation
• Box kaldes en parametriseret type (eller generisk type)• T kaldes en type-variabel• <Integer> kaldes et type-argument
Thursday, December 16, 2010
![Page 116: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/116.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt notation
• Box kaldes en parametriseret type (eller generisk type)• T kaldes en type-variabel• <Integer> kaldes et type-argument
• Bemærk
Thursday, December 16, 2010
![Page 117: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/117.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt notation
• Box kaldes en parametriseret type (eller generisk type)• T kaldes en type-variabel• <Integer> kaldes et type-argument
• Bemærk• En generisk type kan have flere type-variable
Thursday, December 16, 2010
![Page 118: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/118.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt notation
• Box kaldes en parametriseret type (eller generisk type)• T kaldes en type-variabel• <Integer> kaldes et type-argument
• Bemærk• En generisk type kan have flere type-variable• Hver type-variabel kan kun specificeres én gang
Thursday, December 16, 2010
![Page 119: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/119.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt notation
• Box kaldes en parametriseret type (eller generisk type)• T kaldes en type-variabel• <Integer> kaldes et type-argument
• Bemærk• En generisk type kan have flere type-variable• Hver type-variabel kan kun specificeres én gang
• Eksempel: Box med to ting af samme type
Thursday, December 16, 2010
![Page 120: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/120.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt notation
• Box kaldes en parametriseret type (eller generisk type)• T kaldes en type-variabel• <Integer> kaldes et type-argument
• Bemærk• En generisk type kan have flere type-variable• Hver type-variabel kan kun specificeres én gang
• Eksempel: Box med to ting af samme type• Forkert: public class Box<T,T> {...}
Thursday, December 16, 2010
![Page 121: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/121.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt notation
• Box kaldes en parametriseret type (eller generisk type)• T kaldes en type-variabel• <Integer> kaldes et type-argument
• Bemærk• En generisk type kan have flere type-variable• Hver type-variabel kan kun specificeres én gang
• Eksempel: Box med to ting af samme type• Forkert: public class Box<T,T> {...}• Rigtig: public class Box<T> {...}
Thursday, December 16, 2010
![Page 122: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/122.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt notation
• Box kaldes en parametriseret type (eller generisk type)• T kaldes en type-variabel• <Integer> kaldes et type-argument
• Bemærk• En generisk type kan have flere type-variable• Hver type-variabel kan kun specificeres én gang
• Eksempel: Box med to ting af samme type• Forkert: public class Box<T,T> {...}• Rigtig: public class Box<T> {...}
• Eksempel: Box med to ting af forskellig type
Thursday, December 16, 2010
![Page 123: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/123.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt notation
• Box kaldes en parametriseret type (eller generisk type)• T kaldes en type-variabel• <Integer> kaldes et type-argument
• Bemærk• En generisk type kan have flere type-variable• Hver type-variabel kan kun specificeres én gang
• Eksempel: Box med to ting af samme type• Forkert: public class Box<T,T> {...}• Rigtig: public class Box<T> {...}
• Eksempel: Box med to ting af forskellig type• public class Box<T,U> {...}
Thursday, December 16, 2010
![Page 124: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/124.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics
Thursday, December 16, 2010
![Page 125: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/125.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Generiske metoder
Thursday, December 16, 2010
![Page 126: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/126.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Generiske metoder
• Samme koncept bare kun for metoder
Thursday, December 16, 2010
![Page 127: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/127.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Generiske metoder
• Samme koncept bare kun for metoder• Eksempel
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }
! public <U> void inspect(U u) {! ! System.out.println("u: " + u); // toString på u! }}
Thursday, December 16, 2010
![Page 128: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/128.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Generiske metoder
• Samme koncept bare kun for metoder• Eksempel
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }
! public <U> void inspect(U u) {! ! System.out.println("u: " + u); // toString på u! }}
Thursday, December 16, 2010
![Page 129: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/129.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt mere realistisk eksempel
Thursday, December 16, 2010
![Page 130: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/130.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt mere realistisk eksempel
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }
! public static <U> void fillBoxes(U u, ArrayList<Box<U>> boxes) {! ! for (Box<U> box : boxes) {! ! ! box.add(u);! ! }! }}
Thursday, December 16, 2010
![Page 131: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/131.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt mere realistisk eksempel
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }
! public static <U> void fillBoxes(U u, ArrayList<Box<U>> boxes) {! ! for(Box<U> box : boxes) {! ! ! box.add(u);! ! }! }}
Thursday, December 16, 2010
![Page 132: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/132.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt mere realistisk eksempel
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }
! public static <U> void fillBoxes(U u, ArrayList<Box<U>> boxes) {! ! for(Box<U> box : boxes) {! ! ! box.add(u);! ! }! }}
Thursday, December 16, 2010
![Page 133: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/133.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt mere realistisk eksempel
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }
! public static <U> void fillBoxes(U u, ArrayList<Box<U>> boxes) {! ! for(Box<U> box : boxes) {! ! ! box.add(u);! ! }! }}
Thursday, December 16, 2010
![Page 134: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/134.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt mere realistisk eksempel
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }
! public static <U> void fillBoxes(U u, ArrayList<Box<U>> boxes) {
! ! for(Box<U> box : boxes) {! ! ! box.add(u);! ! }! }}
Thursday, December 16, 2010
![Page 135: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/135.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt mere realistisk eksempel
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }
! public static <U> void fillBoxes(U u, ArrayList<Box<U>> boxes) {! ! for(Box<U> box : boxes) {! ! ! box.add(u);! ! }! }}
Thursday, December 16, 2010
![Page 136: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/136.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt mere realistisk eksempel
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }
! public static <U> void fillBoxes(U u, ArrayList<Box<U>> boxes) {! ! for(Box<U> box : boxes) {! ! ! box.add(u);! ! }! }}
public class Main {! public static void main(String[] args) {! ! ArrayList<Box<Integer>> boxes = new ArrayList<Box<Integer>>();! ! Box<Integer> b = new Box<Integer>();! ! boxes.add(b);! ! Integer i = new Integer(10);! ! Box.<Integer>fillBoxes(i, boxes);! }}
Thursday, December 16, 2010
![Page 137: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/137.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt mere realistisk eksempel
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }
! public static <U> void fillBoxes(U u, ArrayList<Box<U>> boxes) {! ! for(Box<U> box : boxes) {! ! ! box.add(u);! ! }! }}
public class Main {! public static void main(String[] args) {! ! ArrayList<Box<Integer>> boxes = new ArrayList<Box<Integer>>();! ! Box<Integer> b = new Box<Integer>();! ! boxes.add(b);! ! Integer i = new Integer(10);! ! Box.<Integer>fillBoxes(i, boxes);! }}
Thursday, December 16, 2010
![Page 138: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/138.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt mere realistisk eksempel
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }
! public static <U> void fillBoxes(U u, ArrayList<Box<U>> boxes) {! ! for(Box<U> box : boxes) {! ! ! box.add(u);! ! }! }}
public class Main {! public static void main(String[] args) {! ! ArrayList<Box<Integer>> boxes = new ArrayList<Box<Integer>>();! ! Box<Integer> b = new Box<Integer>();! ! boxes.add(b);! ! Integer i = new Integer(10);! ! Box.<Integer>fillBoxes(i, boxes);! }}
Thursday, December 16, 2010
![Page 139: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/139.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt mere realistisk eksempel
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }
! public static <U> void fillBoxes(U u, ArrayList<Box<U>> boxes) {! ! for(Box<U> box : boxes) {! ! ! box.add(u);! ! }! }}
public class Main {! public static void main(String[] args) {! ! ArrayList<Box<Integer>> boxes = new ArrayList<Box<Integer>>();! ! Box<Integer> b = new Box<Integer>();! ! boxes.add(b);! ! Integer i = new Integer(10);! ! Box.<Integer>fillBoxes(i, boxes);! }}
Thursday, December 16, 2010
![Page 140: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/140.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt mere realistisk eksempel
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }
! public static <U> void fillBoxes(U u, ArrayList<Box<U>> boxes) {! ! for(Box<U> box : boxes) {! ! ! box.add(u);! ! }! }}
public class Main {! public static void main(String[] args) {! ! ArrayList<Box<Integer>> boxes = new ArrayList<Box<Integer>>();! ! Box<Integer> b = new Box<Integer>();! ! boxes.add(b);! ! Integer i = new Integer(10);! ! Box.<Integer>fillBoxes(i, boxes);! }}
Thursday, December 16, 2010
![Page 141: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/141.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt mere realistisk eksempel
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }
! public static <U> void fillBoxes(U u, ArrayList<Box<U>> boxes) {! ! for(Box<U> box : boxes) {! ! ! box.add(u);! ! }! }}
public class Main {! public static void main(String[] args) {! ! ArrayList<Box<Integer>> boxes = new ArrayList<Box<Integer>>();! ! Box<Integer> b = new Box<Integer>();! ! boxes.add(b);! ! Integer i = new Integer(10);! ! Box.<Integer>fillBoxes(i, boxes);! }}
Thursday, December 16, 2010
![Page 142: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/142.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Lidt mere realistisk eksempel
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }
! public static <U> void fillBoxes(U u, ArrayList<Box<U>> boxes) {! ! for(Box<U> box : boxes) {! ! ! box.add(u);! ! }! }}
public class Main {! public static void main(String[] args) {! ! ArrayList<Box<Integer>> boxes = new ArrayList<Box<Integer>>();! ! Box<Integer> b = new Box<Integer>();! ! boxes.add(b);! ! Integer i = new Integer(10);! ! Box.fillBoxes(i, boxes);! }}
Thursday, December 16, 2010
![Page 143: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/143.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics
Thursday, December 16, 2010
![Page 144: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/144.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Java kan selv se at typen U i fillBoxes skal være Integer
Thursday, December 16, 2010
![Page 145: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/145.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Java kan selv se at typen U i fillBoxes skal være Integer
• Kaldes type-inferens
Thursday, December 16, 2010
![Page 146: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/146.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Java kan selv se at typen U i fillBoxes skal være Integer
• Kaldes type-inferens• Bemærk
Thursday, December 16, 2010
![Page 147: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/147.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Java kan selv se at typen U i fillBoxes skal være Integer
• Kaldes type-inferens• Bemærk
• T og U i har kunnet være alle typer
Thursday, December 16, 2010
![Page 148: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/148.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Java kan selv se at typen U i fillBoxes skal være Integer
• Kaldes type-inferens• Bemærk
• T og U i har kunnet være alle typer• Hvad hvis vi gerne vil bruge generiske typer men kun
tillade nogle bestemte typer
Thursday, December 16, 2010
![Page 149: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/149.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics
Thursday, December 16, 2010
![Page 150: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/150.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Metoder (og klasser) med begrænsede generiske typer
Thursday, December 16, 2010
![Page 151: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/151.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Metoder (og klasser) med begrænsede generiske typer• Eksempel
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }
! public <U extends Car> void inspect(U u) {! ! System.out.println("u: " + u);! }}
Thursday, December 16, 2010
![Page 152: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/152.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Metoder (og klasser) med begrænsede generiske typer• Eksempel
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }
! public <U extends Car> void inspect(U u) {! ! System.out.println("u: " + u);! }}
Thursday, December 16, 2010
![Page 153: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/153.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Metoder (og klasser) med begrænsede generiske typer• Eksempel
• <U extends Car>
• U kan være alle typer der er Car eller derunder i klassehierarkiet (Audi og Skoda)
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }
! public <U extends Car> void inspect(U u) {! ! System.out.println("u: " + u);! }}
Thursday, December 16, 2010
![Page 154: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/154.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Metoder (og klasser) med begrænsede generiske typer• Eksempel
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }
! public <U extends Car> void inspect(U u) {! ! System.out.println("u: " + u);! }}
public class Main {! public static void main(String[] args) {! ! Box<Integer> b = new Box<Integer>();! ! Audi bil = new Audi();! ! b.inspect(bil);! }}
Thursday, December 16, 2010
![Page 155: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/155.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Metoder (og klasser) med begrænsede generiske typer• Eksempel
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }
! public <U extends Car> void inspect(U u) {! ! System.out.println("u: " + u);! }}
public class Main {! public static void main(String[] args) {! ! Box<Integer> b = new Box<Integer>();! ! Audi bil = new Audi();! ! b.inspect(bil);! }}
Thursday, December 16, 2010
![Page 156: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/156.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Metoder (og klasser) med begrænsede generiske typer• Eksempel
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }
! public <U extends Car> void inspect(U u) {! ! System.out.println("u: " + u);! }}
public class Main {! public static void main(String[] args) {! ! Box<Integer> b = new Box<Integer>();! ! b.inspect("This is a String");! }}
Thursday, December 16, 2010
![Page 157: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/157.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• Metoder (og klasser) med begrænsede generiske typer• Eksempel
public class Box<T> {! private T object;
! public void add(T object) {! ! this.object = object;! }
! public T get() {! ! return object;! }
! public <U extends Car> void inspect(U u) {! ! System.out.println("u: " + u);! }}
public class Main {! public static void main(String[] args) {! ! Box<Integer> b = new Box<Integer>();! ! b.inspect("This is a String");! }}
Thursday, December 16, 2010
![Page 158: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/158.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics
Thursday, December 16, 2010
![Page 159: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/159.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• <U extends Something>
Thursday, December 16, 2010
![Page 160: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/160.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• <U extends Something>
• Something kan være en klasse (fx Car)
Thursday, December 16, 2010
![Page 161: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/161.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• <U extends Something>
• Something kan være en klasse (fx Car)• Something kan være et interface
Thursday, December 16, 2010
![Page 162: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/162.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• <U extends Something>
• Something kan være en klasse (fx Car)• Something kan være et interface
• Betyder at U skal implementerer interfacet
Thursday, December 16, 2010
![Page 163: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/163.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• <U extends Something>
• Something kan være en klasse (fx Car)• Something kan være et interface
• Betyder at U skal implementerer interfacet• Lille smule misbrug af nøgleordet extends
Thursday, December 16, 2010
![Page 164: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/164.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• <U extends Something>
• Something kan være en klasse (fx Car)• Something kan være et interface
• Betyder at U skal implementerer interfacet• Lille smule misbrug af nøgleordet extends
• begrænsede generiske typer kan selvfølgelig også bruges på klasser
Thursday, December 16, 2010
![Page 165: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/165.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• <U extends Something>
• Something kan være en klasse (fx Car)• Something kan være et interface
• Betyder at U skal implementerer interfacet• Lille smule misbrug af nøgleordet extends
• begrænsede generiske typer kan selvfølgelig også bruges på klasser• public class Box<T extends Car> {...}
Thursday, December 16, 2010
![Page 166: DM503 - imada.sdu.dk€¦ · ersitet • En abstrakt klasse Abstrakte klasser • En almindelige klasse erklæret med abstract nøgleordet public abstract class MyClass {...} •](https://reader033.fdocuments.us/reader033/viewer/2022042206/5ea90592ab28ab364c778497/html5/thumbnails/166.jpg)
Uni
versi
ty o
f Sou
ther
n D
enm
ark
• Syd
dans
k U
nive
rsite
t
Generics• <U extends Something>
• Something kan være en klasse (fx Car)• Something kan være et interface
• Betyder at U skal implementerer interfacet• Lille smule misbrug af nøgleordet extends
• begrænsede generiske typer kan selvfølgelig også bruges på klasser• public class Box<T extends Car> {...}
• Hvad modellere følgende klasse (MyClass)?public class MyClass<E extends Comparable<E>> implements List<E> {...}
Thursday, December 16, 2010