27.07.2013 Views

overlæsning, klassefelter og -metoder (static), konstante felter

overlæsning, klassefelter og -metoder (static), konstante felter

overlæsning, klassefelter og -metoder (static), konstante felter

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!