Avatar billede steffl Nybegynder
02. maj 2002 - 14:34 Der er 14 kommentarer og
1 løsning

Arrays og Object

Kan man have f. eks. en instans af KlasseA og KlasseB i det samme array, som er af typen Object?

Jeg kunne ikke få det til at virke. Så er det muligt?
Avatar billede Slater Ekspert
02. maj 2002 - 14:36 #1
Ja du skal bare erklære array'en som Object, ikke som KlasseA eller KlasseB.
Avatar billede steffl Nybegynder
02. maj 2002 - 14:37 #2
Men hvad hvis de har forskellige metoder? Finder den selv ud af det?
Avatar billede lyhr007 Nybegynder
02. maj 2002 - 14:37 #3
Joda :)

du skal bare huske at caste dem når du henter dem ud igen.

http://java.sun.com/docs/books/tutorial/java/data/arrays.html
Avatar billede Slater Ekspert
02. maj 2002 - 14:37 #4
Så burde det være muligt at lægge dem begge ind, hvis de altså begge er objects. Det undrer mig at du ikke kan gøre det, men jeg må indrømme at jeg aldrig har brugt SUN's java, kun Microsoft's - det kan vel gøre en forskel...??
Avatar billede lyhr007 Nybegynder
02. maj 2002 - 14:38 #5
blah blah..


(KlasseA)anArray[i].metode();

...
Avatar billede Slater Ekspert
02. maj 2002 - 14:38 #6
Steffl>> Forskellige metoder håndteres i C++ efter virtuality. I java ved jeg det ikke, men går ud fra at det er nogenlunde det samme. Så ja, den kan finde ud af det.
Avatar billede steffl Nybegynder
02. maj 2002 - 14:39 #7
Vil det sige at hvis array[0] er af typen KlasseA, så skal jeg sige (KlasseA) array[0] når jeg henter den ud, eller?
Avatar billede lyhr007 Nybegynder
02. maj 2002 - 14:40 #8
ja det hedder at caste et object, det betyder at du(programøren) garantere at det du henter ud er af en eller anden klasse eller interface.
Avatar billede steffl Nybegynder
02. maj 2002 - 14:41 #9
tak lyhr007
Avatar billede Slater Ekspert
02. maj 2002 - 14:42 #10
lyhr007 har ret. Hvis du har en compiler der stiller færre irriterende krav end J++ compileren (og åbenbart også din) kan du i princippet godt lade være med at caste, bare du er helt sikker på at objektet er den type du tror det er. Ellers kommer der en straypointer og den er ikke rar.
Avatar billede steffl Nybegynder
02. maj 2002 - 15:02 #11
Jeg får en compilerfejl til denne metode:

    public double underskabe_getFinalHeight(int num){
        return (Underskabe)pl[num].underskabe_getFinalHeight();
    }

Fejlbeskeden:

Z:\SKC\Projekt\Elab\Bo\ProduktListe.java:21: cannot resolve symbol
symbol  : method underskabe_getFinalHeight  ()
location: class java.lang.Object
        return (Underskabe)pl[num].underskabe_getFinalHeight();

Gør jeg det ikke rigtigt?
Avatar billede lyhr007 Nybegynder
02. maj 2002 - 15:04 #12
du har defineret at din metode returnere en double:

public double ....


Så er det vel også en god ide at gøre det :)

eller sætte den til at returnere et Underskabe
Avatar billede steffl Nybegynder
02. maj 2002 - 15:09 #13
men det jeg returnerer ved hjælp af underskabe_getFinalHeight(), er en double.

Men jeg skal caste objectet i arrayet til et Underskab... vil det sige at som det er nu caster jeg min double til et Underskab? Hvordan kan jeg så lave det?
Avatar billede lyhr007 Nybegynder
02. maj 2002 - 15:20 #14
return  ((Underskabe)pl[num]).underskabe_getFinalHeight();
Avatar billede steffl Nybegynder
02. maj 2002 - 15:28 #15
Det virker, mange 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