
"Hej, Amigo!"
"Hej!"
"I dag skal vi studere Object-klassen.
Du har allerede stødt på den, og du ved, at Object er basisklassen for alle klasser. Den har praktisk talt ingen data, men den har flere metoder."
"Hvorfor har det brug for metoder? Er der virkelig nogen, der opretter forekomster af klassen Object?"
"Se på det på denne måde: metoderne i Object-klassen er fælles på tværs af alle klasser. Med andre ord identificerede Javas skabere adskillige metoder, som hver klasse efter deres mening burde have og føjede dem til Object-klassen."
"Og når det kombineres med polymorfi (evnen til at tilsidesætte Object-klassens metoder i afledte klasser), bliver dette et meget kraftfuldt værktøj."
"Lad os se, hvad disse metoder er:"
Metode | Beskrivelse |
---|---|
|
Returnerer en strengrepræsentation af objektet. |
|
Et par metoder, der bruges til at sammenligne objekter. |
|
Returnerer et specielt objekt, der beskriver den aktuelle klasse. |
|
Metoder til at kontrollere adgang til et objekt fra forskellige tråde. Til trådsynkronisering. |
|
Denne metode lader dig frigive indbyggede ikke-Java-ressourcer: luk filer, streams osv. |
|
Denne metode lader dig klone et objekt: opretter en duplikat af objektet. |
"Disse metoder kan opdeles i 6 grupper. Du kender allerede nogle af dem, og resten stifter vi bekendtskab med i de efterfølgende lektioner."
"Af en eller anden grund kan jeg ikke se noget brugbart her."
"Amigo! Hvis disse metoder ikke var vigtige, ville de ikke have tilføjet dem til hver enkelt genstand! Så jeg vil råde dig til at se nærmere på, hvad disse er, og hvorfor de er nødvendige. Hvis de virker ligegyldige for dig , så har du enten ikke forstået noget eller ikke forstået noget rigtigt."
"OK. Jeg vil lytte godt efter."
"Lad os starte med toString()-metoden.
"Denne metode giver dig mulighed for at få en tekstbeskrivelse af ethvert objekt. Dens implementering i klassen Object er meget enkel:"
return getClass().getName() + "@" + Integer.toHexString(hashCode());
"getClass() og hashCode() er også metoder i Object klasse.
Kaldning af denne metode producerer typisk et resultat som dette:"
java.lang.Object@12F456
"Og hvad nytter sådan en beskrivelse?"
"Denne beskrivelse lader dig kende klassen for det objekt, som metoden blev kaldt på. Du kan også skelne mellem objekter; forskellige objekter vil have forskellige cifre efter @-symbolet."
"Men denne metodes reelle værdi ligger et andet sted. Denne metode kan overskrives i enhver klasse for at returnere en mere detaljeret eller passende objektbeskrivelse."
"Men der er mere. Fordi du kan få en tekstrepræsentation af hvert objekt, gjorde Java det muligt for dig at implementere understøttelse af 'tilføjelse' af strenge til objekter.
Tjek det ud:"
Kode | Hvad sker der virkelig |
---|---|
|
|
|
|
|
|
"Ja, jeg bruger det her jævnligt. Især når jeg skriver et program eller leder efter fejl. Det er en nyttig operation."
GO TO FULL VERSION