"Hej, Amigo, det er mig igen, Ellie. Undskyld at jeg siger det igen og igen, men det er sædvanligt på Jorden i det 31. århundrede. Jeg vil gerne give dig flere detaljer om referencevariabler og videregivelse af referencevariabler til funktioner ( metoder)."
"Jeg er klar."
"Fint, så lyt. Referencevariabler er alle ikke-primitive variabler. Sådanne variabler indeholder kun en objektreference (en reference til et objekt)."
"Primitive variabler indeholder værdier, mens referencevariable gemmer referencer til objekter eller nul. Har jeg ret?"
"Absolut."
"Hvad er en reference?"
"Forholdet mellem et objekt og en objektreference er ligesom forholdet mellem en person og hendes telefonnummer. Telefonnummeret er ikke personen, men det kan bruges til at ringe til personen, bede om nogle oplysninger, administrere hende eller give ordrer. En reference bruges også til at arbejde med objekter. Alle objekter interagerer med hinanden ved hjælp af referencer."
"Som om de talte med hinanden i telefonen?"
"Nøjagtigt. Når en primitiv variabel tildeles, kopieres værdien. Hvis der tildeles en reference, kopieres kun adressen på objektet (telefonnummeret). Selve objektet kopieres ikke. "
"OK, jeg forstår."
"En reference giver dig endnu en fordel: du kan videregive en objektreference til enhver metode, og den metode vil være i stand til at bruge referencen til at ændre (ændre) objektet ved at kalde dets metoder og få adgang til data inde i objektet."
Eksempel 1
Værdierne m og n ændres ikke her.
|
Og her er hvorfor.
Denne kode er analog med koden til venstre
|
"Kun værdierne henholdsvis 5 (m) og 6 (n) er tildelt variabler-enogb;-enogbved intet om (og påvirker ikke på nogen måde) m og n."
"For at sige dig sandheden, så indser jeg nu, at jeg ikke forstod noget. Kan du give mig nogle flere eksempler?"
"Med en objektreference kunne vi have gjort følgende:"
Eksempel 2
Objekternes data ændres i denne kode
|
Og her er hvorfor.
Denne kode er analog med koden til venstre
|
"Referencer til henholdsvis jen og beth er tildelt variablerne a og b; a og b ændrer værdierne inde i objekterne jen og beth."
"Og du kan erklære klasser inde i andre klasser, ikke? Fedt!"
"Men jeg forstår stadig ikke alt andet så godt."
"Alt til sin tid."
GO TO FULL VERSION