Alla objektklassmetoderna, plus mer om metoden toString() - 1

"Hej, Amigo!"

"Hej!"

"Idag ska vi studera Object-klassen.
Du har redan stött på den, och du vet att Object är basklassen för alla klasser. Den har praktiskt taget inga data, men den har flera metoder."

"Varför behöver det metoder? Skapar någon verkligen instanser av klassen Object?"

"Se på det så här: metoderna i Object-klassen är gemensamma för alla klasser. Med andra ord, Javas skapare identifierade flera metoder som, enligt deras åsikt, varje klass borde ha och la till dem till Object-klassen."

"Och när det kombineras med polymorfism (förmågan att åsidosätta objektklassens metoder i härledda klasser), blir detta ett mycket kraftfullt verktyg."

"Låt oss se vad dessa metoder är:"

Metod Beskrivning
public String toString()
Returnerar en strängrepresentation av objektet.
public native int hashCode()
public boolean equals(Object obj)
Ett par metoder som används för att jämföra objekt.
public final native Class getClass()
Returnerar ett speciellt objekt som beskriver den aktuella klassen.
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 för att kontrollera åtkomst till ett objekt från olika trådar. För trådsynkronisering.
protected void finalize()
Den här metoden låter dig släppa inbyggda icke-Java-resurser: stäng filer, strömmar, etc.
protected native Object clone()
Den här metoden låter dig klona ett objekt: skapar en dubblett av objektet.

"Dessa metoder kan delas in i 6 grupper. Du är redan bekant med några av dem, och vi kommer att bekanta oss med resten i efterföljande lektioner."

"Av någon anledning ser jag inget användbart här."

"Amigo! Om dessa metoder inte varit viktiga, skulle de inte ha lagt till dem till varje enskilt objekt! Så jag skulle råda dig att titta närmare på vad dessa är och varför de behövs. Om de verkar oviktiga för dig , då har du antingen inte förstått något eller inte förstått något rätt."

"Okej. Jag ska lyssna noga."

"Låt oss börja med metoden toString().

"Denna metod låter dig få en textbeskrivning av vilket objekt som helst. Dess implementering i klassen Object är mycket enkel:"

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

"getClass() och hashCode() är också metoder i objektklassen.
Att anropa den här metoden ger vanligtvis ett resultat som detta:"

java.lang.Object@12F456

"Och vad hjälper en sådan beskrivning?"

"Den här beskrivningen låter dig veta klassen för objektet som metoden anropades på. Du kan också skilja mellan objekt; olika objekt kommer att ha olika siffror efter @-symbolen."

"Men den här metodens verkliga värde ligger någon annanstans. Denna metod kan skrivas över i vilken klass som helst för att returnera en mer detaljerad eller lämplig objektbeskrivning."

"Men det finns mer. Eftersom du kan få en textrepresentation av varje objekt, gjorde Java det möjligt för dig att implementera stöd för att 'lägga till' strängar till objekt.
Kolla in det:"

Koda Vad händer egentligen
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, jag använder det här regelbundet. Speciellt när jag skriver ett program eller letar efter buggar. Det är en användbar operation."