overlæsning, klassefelter og -metoder (static), konstante felter
overlæsning, klassefelter og -metoder (static), konstante felter
overlæsning, klassefelter og -metoder (static), konstante felter
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Overlæsning af konstruktorer <strong>og</strong> <strong>metoder</strong><br />
En konstruktor er karakteriseret ved sin signatur.<br />
Signaturen er konstruktorens navn (som er klassens navn) samt typerne af dens formelle parametre.<br />
Eksempel: Signaturen for konstruktoren Time fra før er ‘Time(int, int)’.<br />
En klasse kan have flere konstruktorer (som jo har samme navn) så længe deres signaturer er forskellige.<br />
Dette kaldes <strong>overlæsning</strong> af konstruktoren. På engelsk: ‘overloading’.<br />
Metoder kan overlæsses lige som konstruktorer.<br />
D.v.s. at der kan være flere <strong>metoder</strong> med samme navn men forskellige signaturer i en klasse.<br />
En metodes signatur er dens navn samt typerne af dens formelle parametre.<br />
Metodens resultat-type indgår ikke i signaturen.<br />
Overlæssede <strong>metoder</strong> med samme navn kan have forskellige resultat-typer.<br />
Pr<strong>og</strong>rammering 2004 KVL Side 3-5<br />
Eksempel: Overlæsning af konstruktorer i Time<br />
public class Time {<br />
private int hours, min; // since midnight<br />
}<br />
public Time(int hours, int min) {<br />
this.hours = hours;<br />
this.min = min;<br />
}<br />
public Time(int hours) {<br />
this.hours = hours;<br />
this.min = 0;<br />
}<br />
public Time(Time t) {<br />
this.hours = t.hours;<br />
this.min = t.min;<br />
}<br />
... <strong>metoder</strong> uændrede ...<br />
Pr<strong>og</strong>rammering 2004 KVL Side 3-6<br />
Test af ny Time klasse<br />
public class TestTime2 {<br />
}<br />
public <strong>static</strong> void main(String[] args) {<br />
Time t0, t1, t2, t3;<br />
t0 = new Time(12);<br />
t1 = new Time(12, 35); // A<br />
System.out.println("t0 = " + t0);<br />
System.out.println("t1 = " + t1);<br />
}<br />
t2 = t1.plus(40);<br />
t3 = new Time(t1);<br />
t1.move(45); // B<br />
System.out.println("t1 = " + t1);<br />
System.out.println("t2 = " + t2);<br />
System.out.println("t3 = " + t3);<br />
Pr<strong>og</strong>rammering 2004 KVL Side 3-7<br />
Datamatens hukommelse ved kørsel af TestTime2<br />
A<br />
t0 t1 t2 t3<br />
: Time<br />
hours 12<br />
min 0<br />
twoDigits<br />
toString<br />
plus<br />
to<br />
move<br />
B t0 t1 t2 t3<br />
: Time<br />
hours 12<br />
min 0<br />
twoDigits<br />
toString<br />
plus<br />
to<br />
move<br />
hours<br />
min<br />
: Time<br />
hours 12<br />
min 35<br />
twoDigits<br />
toString<br />
plus<br />
to<br />
move<br />
: Time<br />
twoDigits<br />
toString<br />
plus<br />
to<br />
move<br />
: Time<br />
12 13 hours 13<br />
35 20 min 15<br />
twoDigits<br />
toString<br />
plus<br />
to<br />
move<br />
: Time<br />
hours 12<br />
min 35<br />
twoDigits<br />
toString<br />
plus<br />
to<br />
move<br />
Pr<strong>og</strong>rammering 2004 KVL Side 3-8