
"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 |
---|---|
|
Returnerer en strengrepresentasjon av objektet. |
|
Et par metoder som brukes til å sammenligne objekter. |
|
Returnerer et spesielt objekt som beskriver gjeldende klasse. |
|
Metoder for å kontrollere tilgang til et objekt fra forskjellige tråder. For trådsynkronisering. |
|
Denne metoden lar deg frigjøre innfødte ikke-Java-ressurser: lukk filer, strømmer osv. |
|
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 |
---|---|
|
|
|
|
|
|
"Ja, jeg bruker dette regelmessig. Spesielt når jeg skriver et program eller ser etter feil. Det er en nyttig operasjon."
GO TO FULL VERSION