Alle methoden van objectklassen, plus meer over de methode toString() - 1

"Hallo Amigo!"

"Hoi!"

"Vandaag gaan we de klasse Object bestuderen.
Je hebt hem al gezien en je weet dat Object de basisklasse is voor alle klassen. Hij heeft praktisch geen gegevens, maar hij heeft wel verschillende methoden."

"Waarom heeft het methoden nodig? Maakt iemand echt instanties van de klasse Object?"

"Bekijk het op deze manier: de methoden in de klasse Object zijn gemeenschappelijk in alle klassen. Met andere woorden, de makers van Java hebben verschillende methoden geïdentificeerd die volgens hen elke klasse zou moeten hebben en hebben ze toegevoegd aan de klasse Object."

"En in combinatie met polymorfisme (de mogelijkheid om de methoden van de klasse Object in afgeleide klassen te overschrijven), wordt dit een zeer krachtig hulpmiddel."

"Laten we eens kijken wat deze methoden zijn:"

Methode Beschrijving
public String toString()
Retourneert een tekenreeksrepresentatie van het object.
public native int hashCode()
public boolean equals(Object obj)
Een paar methoden die worden gebruikt om objecten te vergelijken.
public final native Class getClass()
Retourneert een speciaal object dat de huidige klasse beschrijft.
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()
Methoden voor het regelen van de toegang tot een object vanuit verschillende threads. Voor draadsynchronisatie.
protected void finalize()
Met deze methode kunt u native niet-Java-bronnen vrijgeven: sluit bestanden, streams, enz.
protected native Object clone()
Met deze methode kunt u een object klonen: maakt een duplicaat van het object.

"Deze methoden zijn onder te verdelen in 6 groepen. Met een aantal ben je al bekend, met de rest maken we in de volgende lessen kennis."

'Om de een of andere reden zie ik hier niets bruikbaars.'

"Amigo! Als deze methoden niet belangrijk waren, zouden ze ze niet aan elk afzonderlijk object hebben toegevoegd! Dus ik zou je aanraden om beter te kijken naar wat deze zijn en waarom ze nodig zijn. Als ze je onbelangrijk lijken , dan heb je iets niet of niet goed begrepen."

"Oké. Ik zal goed luisteren."

"Laten we beginnen met de toString() methode.

"Met deze methode kunt u een tekstbeschrijving krijgen van elk object. De implementatie ervan in de klasse Object is heel eenvoudig:"

return getClass().getName() + "@" + Integer.toHexString(hashCode());

"getClass() en hashCode() zijn ook methoden van de klasse Object.
Het aanroepen van deze methode levert meestal een resultaat als dit op:"

java.lang.Object@12F456

"En wat heb je aan zo'n beschrijving?"

"Deze beschrijving laat je de klasse weten van het object waarop de methode is aangeroepen. Je kunt ook onderscheid maken tussen objecten; verschillende objecten hebben verschillende cijfers achter het @-symbool."

"Maar de echte waarde van deze methode ligt ergens anders. Deze methode kan in elke klasse worden overschreven om een ​​meer gedetailleerde of geschikte objectbeschrijving te retourneren."

"Maar er is meer. Omdat je een tekstrepresentatie van elk object kunt krijgen, heeft Java het voor je mogelijk gemaakt om ondersteuning te implementeren voor het 'toevoegen' van strings aan objecten. Bekijk het eens
:"

Code Wat gebeurt er echt
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, ik gebruik dit regelmatig. Vooral als ik een programma aan het schrijven ben of bugs zoek. Het is een handige operatie."