Avatar billede touel Nybegynder
21. september 2005 - 23:20 Der er 21 kommentarer og
2 løsninger

Forskel på et param variabel og objekt

jeg vil gerne vide hvad forskellen er på følgende:

1) Hvis jeg har en klasse som hedder "Hej" kan jeg oprette et nyt objekt ud fra den og bruge klassens metoder efterfølgende på objektet.

2)Hvis jeg nu i en anden klasse "Farvel", laver en reference variabel af "Hej"i en metodens parameter, fx 

  public int lagSammen (Hej hello)

Så kan jeg stadig godt skrive Hej's metoder efter hello i koden.

Det jeg ikk kan forstå er at selvom man opretter et objekt, og har efterfølgende adgang til klassens metoder, hvorfor kan man så i andre klasse bare skrive : Hej hello, og så skrive diverse metoder fra Hej-klassen efter hello ????

Sig til hvis yderligere forklaring skal til
Avatar billede kalp Novice
21. september 2005 - 23:36 #1
Avatar billede arne_v Ekspert
22. september 2005 - 14:35 #2
fordi det at kalde en metode med et argument gør det man kalder med tilgængeligt
for metoden

System.out.println("Kuk kuk");

kalder println metoden med en streng - println metoden har så adgang til faktisk
at udskrive den string (hvilket muligvis involverer at kalde charAt og length
metoderne på den string).
Avatar billede touel Nybegynder
22. september 2005 - 15:37 #3
arne - nu er jeg ærlig over for dig... jeg forstod ikke en KUK af hvad du skrev

Kan du beskrive det med nogle eks, så man kan se fordel af at have et obj, og fordel/ulempe ved at have en reference variabel ?
Avatar billede arne_v Ekspert
22. september 2005 - 16:23 #4
man kan lave sit objekt i en metode men bruge dt i mange metoder ved at overføre
det som argument
Avatar billede touel Nybegynder
22. september 2005 - 16:51 #5
vil det sige, at et objekt SKAL være oprettet et sted, før man begynder at overføre det som argument ?
Avatar billede touel Nybegynder
22. september 2005 - 17:21 #6
hej kalp

jeg har læst din artikel, men syntes du selv det svarer på mit spg ?

nej det syntes jeg ikk. det er en generel artikel du har skrevet, som jeg forstår udemærket.

Men i den har du en Person klasse. Hvis du nu havde en anden klasse også som fx hed Arbejde, og i den har du en metode som hedder

public double timeLon(Person pers)

pers.hentNavn () bla bla bla....

Det er det jeg ikke kan forstå, at når man i parameter skriver "Person pers", og efterfølgende kan kalde Persons metoder efter pers, hvordan det kan lade sig gøre, fordi man har jo ikk oprettet et objekt af Person klassen under Arbejde ?
Avatar billede arne_v Ekspert
22. september 2005 - 17:28 #7
ja
Avatar billede kalp Novice
22. september 2005 - 22:39 #8
Det kan du godt... Du har ikke oprettet et objekt af klassen Person, men du sender jo en reference med til en allerede oprettet instans af klassen Person.

angående min artikel så var det bare et suplement til dit spørgsmål og også derfor jeg kun lagde en kommentar;)
Avatar billede kalp Novice
22. september 2005 - 22:42 #9
Java arbejde med referencer til Objekter.. Dvs. du sender ikke et objekt med i din metode, men blot en reference til et.

Man kan sige at du i metoden sender en pegepind med som pege på din instans af klassen person..
Avatar billede touel Nybegynder
24. september 2005 - 21:18 #10
arne og kal, I må begge gerne lægge et svar
Avatar billede arne_v Ekspert
24. september 2005 - 21:19 #11
ok
Avatar billede kalp Novice
24. september 2005 - 21:20 #12
Får du her
Avatar billede touel Nybegynder
24. september 2005 - 21:21 #13
Damn I var sgu hurtige om at svare nu !!!
Avatar billede kalp Novice
24. september 2005 - 21:24 #14
hehe:)
Avatar billede touel Nybegynder
24. september 2005 - 22:53 #15
kalp , lige en sidste spg før denne spg engang for alle kan gøres færdig. Man kunne lave en reference til et objekt i en anden klasse ved at skrive fx følgende:

public String hentNavn (Arbejde lon){}

og efterfølgende kan man efter lon skriver diverse metoder....

Men hvad nu hvis man bare skrev Arbejde lon under de lokalde variabler i starten...

jeg legede med et eks og fik NullPointerExp ?!?!?!
Avatar billede kalp Novice
24. september 2005 - 23:04 #16
I starten hvor?

Du må gerne vise dit eks. her så kan jeg bedre se hvad det er du mangler:)
Det er sikkert bare noget med en reference der mangler
Avatar billede touel Nybegynder
24. september 2005 - 23:04 #17
nu må du ikke spørg mig om at vedlægge koden, jeg har lavet så meget rundt i den nu at nullpointer exp er forsvundet, men jeg vil stadig gerne have en forklaring
Avatar billede kalp Novice
24. september 2005 - 23:10 #18
Hvis du bare skriver

Arbejde lon;

så vil det ikke virke idet du mangler at initialisere objektet..

Det gør du ved at skrive

Arbejde lon = new Arbejde();

så undre du dig over hvorfor det her virker

public String hentNavn (Arbejde lon){}

det gør det fordi du sender et ALLEREDE initialiseret objekt af klassen Arbejde.. med i parameter listen af din metode.
Avatar billede touel Nybegynder
24. september 2005 - 23:17 #19
Må man KUN sende med i parameter listen, dvs  public String hentNavn (Arbejde lon){}?

Kan man ikk i pågældende klasse erklærer Arbejde lon under lok variabler og så bruge den alle steder i det pågældende klasse ???
Avatar billede kalp Novice
24. september 2005 - 23:28 #20
jo så skal du skrive det sådan her

Arbejde lon;

øverst sammen med dine andre variabler.

public String hentNavn (Arbejde lon){

this.lon = lon
}
Avatar billede kalp Novice
24. september 2005 - 23:29 #21
public String hentNavn (Arbejde lon){

this.lon = lon ;
}


manglede lige et

;
Avatar billede touel Nybegynder
24. september 2005 - 23:32 #22
kalp du er en skatter... så smutter jeg  i seng
Avatar billede kalp Novice
24. september 2005 - 23:44 #23
godnat:)
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