
"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 |
---|---|
|
Returnerar en strängrepresentation av objektet. |
|
Ett par metoder som används för att jämföra objekt. |
|
Returnerar ett speciellt objekt som beskriver den aktuella klassen. |
|
Metoder för att kontrollera åtkomst till ett objekt från olika trådar. För trådsynkronisering. |
|
Den här metoden låter dig släppa inbyggda icke-Java-resurser: stäng filer, strömmar, etc. |
|
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 |
---|---|
|
|
|
|
|
|
"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."
GO TO FULL VERSION