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

matfys.kvl.dk

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

Overlæsning af konstruktorer og metoder

En konstruktor er karakteriseret ved sin signatur.

Signaturen er konstruktorens navn (som er klassens navn) samt typerne af dens formelle parametre.

Eksempel: Signaturen for konstruktoren Time fra før er ‘Time(int, int)’.

En klasse kan have flere konstruktorer (som jo har samme navn) så længe deres signaturer er forskellige.

Dette kaldes overlæsning af konstruktoren. På engelsk: ‘overloading’.

Metoder kan overlæsses lige som konstruktorer.

D.v.s. at der kan være flere metoder med samme navn men forskellige signaturer i en klasse.

En metodes signatur er dens navn samt typerne af dens formelle parametre.

Metodens resultat-type indgår ikke i signaturen.

Overlæssede metoder med samme navn kan have forskellige resultat-typer.

Programmering 2004 KVL Side 3-5

Eksempel: Overlæsning af konstruktorer i Time

public class Time {

private int hours, min; // since midnight

}

public Time(int hours, int min) {

this.hours = hours;

this.min = min;

}

public Time(int hours) {

this.hours = hours;

this.min = 0;

}

public Time(Time t) {

this.hours = t.hours;

this.min = t.min;

}

... metoder uændrede ...

Programmering 2004 KVL Side 3-6

Test af ny Time klasse

public class TestTime2 {

}

public static void main(String[] args) {

Time t0, t1, t2, t3;

t0 = new Time(12);

t1 = new Time(12, 35); // A

System.out.println("t0 = " + t0);

System.out.println("t1 = " + t1);

}

t2 = t1.plus(40);

t3 = new Time(t1);

t1.move(45); // B

System.out.println("t1 = " + t1);

System.out.println("t2 = " + t2);

System.out.println("t3 = " + t3);

Programmering 2004 KVL Side 3-7

Datamatens hukommelse ved kørsel af TestTime2

A

t0 t1 t2 t3

: Time

hours 12

min 0

twoDigits

toString

plus

to

move

B t0 t1 t2 t3

: Time

hours 12

min 0

twoDigits

toString

plus

to

move

hours

min

: Time

hours 12

min 35

twoDigits

toString

plus

to

move

: Time

twoDigits

toString

plus

to

move

: Time

12 13 hours 13

35 20 min 15

twoDigits

toString

plus

to

move

: Time

hours 12

min 35

twoDigits

toString

plus

to

move

Programmering 2004 KVL Side 3-8