Avatar billede Slettet bruger
30. august 2002 - 12:44 Der er 7 kommentarer og
1 løsning

Kald af metoder i sub-klasse.

Jeg har fx. følgende klasser.

Dyr (super-klasse)
Giraf (sub-klasse af Dyr)
Tiger (sub-klasse af Dyr)

I Giraf-klassen er en metode flygt(),
og i Tiger-klassen er en metode angrib().

I programmet erklærer jeg så følgende:


Dyr[] DyrTabel = new Dyr[2];
Dyr[0] = new Giraf();
Dyr[1] = new Tiger();

Det jeg ønsker er så at kunne gennemløbe arrayet og kalde flygt-metoden hvis det aktuelle element er en giraf og angrib-metoden hvis elementet er en tiger.
Noget i stil med:

for (int i = 0; i < 2; i++)
{
    if (Dyr[i] = en giraf)
        Dyr[i].flygt();
    if (Dyr[i] = en tiger)
        Dyr[i].angrib();
}

Har tænkt på om der findes noget i stil med dynamic_cast fra C++, men har fundet noget.
Avatar billede disky Nybegynder
30. august 2002 - 12:54 #1
if (Dyr[i] instanceof Giraf)
{
}

osv.
Avatar billede disky Nybegynder
30. august 2002 - 12:56 #2
Du kan bruge instanceof keywordet til at se om en klasse er af en bestemt type.
Avatar billede Slettet bruger
30. august 2002 - 13:15 #3
Det prøver jeg lige.
Avatar billede martinhrj Nybegynder
30. august 2002 - 13:19 #4
Ellers kunne du jo, i nedarvningens ånd :), lave en metode i Dyr som hed handling(), og lade giraf og tiger nedarve denne, med hver sin implementering...
Avatar billede Slettet bruger
30. august 2002 - 13:25 #5
Jeg kan stadig ikke kalde flygt-metoden.

Er der en måde hvorpå man kan konvertere et objekt af typen dyr til fx. et objekt af typen giraf?
Avatar billede disky Nybegynder
30. august 2002 - 13:27 #6
if (Dyr[i] instanceof Giraf)
        ((Giraf)Dyr[i]).flygt();
    if (Dyr[i] instanceof Tiger)
        ((Tiger)Dyr[i]).angrib();


Skulle gerne virker :)
Avatar billede Slettet bruger
30. august 2002 - 13:31 #7
hæhæ, det vidste jeg jo godt man kunne nu jeg tænker mig om.
Tak for hjælpen.
Avatar billede disky Nybegynder
30. august 2002 - 13:40 #8
lol :)

Selv tak.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester