Alle metodene for objektklassene, pluss mer om toString()-metoden - 1

"Hei, Amigo!"

"Hei!"

"I dag skal vi studere Object-klassen.
Du har allerede møtt den, og du vet at Object er basisklassen for alle klasser. Den har praktisk talt ingen data, men den har flere metoder."

"Hvorfor trenger det metoder? Er det virkelig noen som lager forekomster av Object-klassen?"

"Se på det slik: Metodene i Object-klassen er felles for alle klasser. Med andre ord, Javas skapere identifiserte flere metoder som, etter deres mening, hver klasse burde ha og la dem til Object-klassen."

"Og når det kombineres med polymorfisme (evnen til å overstyre Object-klassens metoder i avledede klasser), blir dette et veldig kraftig verktøy."

"La oss se hva disse metodene er:"

Metode Beskrivelse
public String toString()
Returnerer en strengrepresentasjon av objektet.
public native int hashCode()
public boolean equals(Object obj)
Et par metoder som brukes til å sammenligne objekter.
public final native Class getClass()
Returnerer et spesielt objekt som beskriver gjeldende 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 for å kontrollere tilgang til et objekt fra forskjellige tråder. For trådsynkronisering.
protected void finalize()
Denne metoden lar deg frigjøre innfødte ikke-Java-ressurser: lukk filer, strømmer osv.
protected native Object clone()
Denne metoden lar deg klone et objekt: oppretter et duplikat av objektet.

"Disse metodene kan deles inn i 6 grupper. Du er allerede kjent med noen av dem, og vi vil bli kjent med resten i de påfølgende leksjonene."

"Av en eller annen grunn ser jeg ikke noe nyttig her."

"Amigo! Hvis disse metodene ikke var viktige, ville de ikke ha lagt dem til hvert enkelt objekt! Så jeg vil råde deg til å se nærmere på hva disse er og hvorfor de trengs. Hvis de virker uviktige for deg , så har du enten ikke forstått noe eller ikke forstått noe riktig."

"OK. Jeg skal lytte nøye."

"La oss starte med toString()-metoden.

"Denne metoden lar deg få en tekstbeskrivelse av ethvert objekt. Implementeringen i Object-klassen er veldig enkel:"

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

"getClass() og hashCode() er også metoder for objektklassen.
Å kalle denne metoden gir vanligvis et resultat som dette:"

java.lang.Object@12F456

"Og hva hjelper en slik beskrivelse?"

"Denne beskrivelsen lar deg vite klassen til objektet som metoden ble kalt på. Du kan også skille mellom objekter; forskjellige objekter vil ha forskjellige sifre etter @-symbolet."

"Men denne metodens virkelige verdi ligger et annet sted. Denne metoden kan overskrives i hvilken som helst klasse for å returnere en mer detaljert eller passende objektbeskrivelse."

"Men det er mer. Fordi du kan få en tekstrepresentasjon av hvert objekt, gjorde Java det mulig for deg å implementere støtte for å 'legge til' strenger til objekter.
Sjekk det ut:"

Kode Hva skjer egentlig
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 bruker dette regelmessig. Spesielt når jeg skriver et program eller ser etter feil. Det er en nyttig operasjon."