Alle Object class-metoderne, plus mere om toString()-metoden - 1

"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
public String toString()
Returnerer en strengrepræsentation af objektet.
public native int hashCode()
public boolean equals(Object obj)
Et par metoder, der bruges til at sammenligne objekter.
public final native Class getClass()
Returnerer et specielt objekt, der beskriver den aktuelle klasse.
public final native void notify()
public final native void notifyAll()
public final native void wait(long timeout)
public final void wait(long timeout, intnanos)
public final void wait()
Metoder til at kontrollere adgang til et objekt fra forskellige tråde. Til trådsynkronisering.
protected void finalize()
Denne metode lader dig frigive indbyggede ikke-Java-ressourcer: luk filer, streams osv.
protected native Object clone()
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
int age = 18;
System.out.println("Age is " + age);

String s = String.valueOf(18);
String result = "Age is " + s;
System.out.println(result);
Student st = new Student("Vincent");
System.out.println("Student is " + st);

Student st = new Student("Vincent");
String result = "Student is " + st.toString();
System.out.println(result);
Car car = new Porsche();
System.out.println("My car is " + car);

Car car = new Porsche();
String result = "My car is " + car.toString();
System.out.println(result);

"Ja, jeg bruger det her jævnligt. Især når jeg skriver et program eller leder efter fejl. Det er en nyttig operation."