Objektklasse i Java
Objektklasse i Java er til stede i java.lang pakke.
- Hver klasse er direkte eller indirekte afledt fra Object-klassen. Hvis en klasse ikke udvider nogen anden klasse, er det en direkte underordnet klasse af Java Object klasse og hvis den udvider en anden klasse, er den indirekte afledt.
- Object-klassen giver flere metoder som f.eks toString()er lig med() hashCode() og mange andre.
- Object-klassen fungerer som en rod til arvshierarkiet i ethvert Java-program.
Her bruger vi toString() og hashCode() metoder i objektklassen at give en tilpasset strengrepræsentation for en klasse .
Java // Java Code to demonstrate Object class class Person { String n ; //name // Constructor public Person ( String n ) { this . n = n ; } // Override toString() for a // custom string representation @Override public String toString () { return 'Person{name:'' + n + ''}' ; } public static void main ( String [] args ) { Person p = new Person ( 'Geek' ); // Custom string representation System . out . println ( p . toString ()); // Default hash code value System . out . println ( p . hashCode ()); } }
Produktion
Person{name:'Geek'} 321001045 Forklaring: I ovenstående eksempel tilsidesætter vi toString() metode til at give en tilpasset strengrepræsentation af Person-klassen og bruge hashCode() metode til at vise standard-hash-kodeværdien for objektet.
Objektklassemetoder
Object-klassen giver flere metoder, som er som følger:
- toString() metode
- hashCode() metode
- equals(Object obj) metode
- finalize() metode
- getClass() metode
- clone() metode
- wait() notify() notifyAll() (Samtidighedsmetoder)
1. toString() metode
De toString() giver en strengrepræsentation af et objekt og bruges til at konvertere et objekt til en streng. Standardmetoden toString() for klasse Object returnerer en streng bestående af navnet på den klasse, som objektet er en instans af, at-tegnet tegnet `@' og den usignerede hexadecimale repræsentation af objektets hash-kode.
Note: Når vi prøver at udskrive en objektreference, kaldes internt toString()-metoden.
Eksempel:
offentlig klasse Elev {
public String toString() {
returnere 'Studentobjekt';
}
}
Forklaring: Metoden toString() tilsidesættes for at returnere en tilpasset strengrepræsentation af Student-objektet.
2. hashCode() Metode
For hvert objekt genererer JVM et unikt nummer, som er en hashkode. Det returnerer distinkte heltal for distinkte objekter. En almindelig misforståelse om denne metode er, at hashCode()-metoden returnerer adressen på objektet, som ikke er korrekt. Den konverterer objektets interne adresse til et heltal ved hjælp af en algoritme. hashCode() metoden er hjemmehørende fordi det i Java er umuligt at finde adressen på et objekt, så det bruger indfødte sprog som C/C++ til at finde adressen på objektet.
Brug af hashCode() metode:
Det returnerer en hashværdi, der bruges til at søge efter objekter i en samling. JVM(Java Virtual Machine) bruger hashcode-metoden, mens objekter gemmes i hashing-relaterede datastrukturer som HashSet HashMap Hashtable osv. Den største fordel ved at gemme objekter baseret på hash-kode er, at søgning bliver let.
Note: Tilsidesættelse af hashCode() metode skal gøres sådan, at vi for hvert objekt genererer et unikt tal. For eksempel for en elevklasse kan vi returnere rullenr. af en elev fra hashCode()-metoden, da den er unik.
Eksempel:
offentlig klasse Elev {
int rulle;
@Tilsidesæt
public int hashCode() {
rulle tilbage;
}
}
Forklaring: De hashCode() metode tilsidesættes for at returnere en tilpasset hashværdi baseret på rullen af Student-objektet.
3. er lig (Objekt obj) Metode
De er lig med () metoden sammenligner det givne objekt med det aktuelle objekt. Det anbefales at tilsidesætte denne metode for at definere tilpassede lighedsbetingelser.
Note: Det er generelt nødvendigt at tilsidesætte hashCode() metode, når denne metode tilsidesættes for at opretholde den generelle kontrakt for hashCode-metoden, som siger, at lige objekter skal have lige hash-koder.
Eksempel:
offentlig klasse Elev {
int rulle;
@Tilsidesæt
public boolean lig med(Objekt o) {
if (o instans af elev) {
returnere denne.rulle == ((Student) o).rulle;
}
returnere falsk;
}
}
Forklaring: De er lig med () metode tilsidesættes for at sammenligne rulle mellem to elevobjekter.
4. getClass() metode
De getClass() metoden returnerer klasseobjektet for 'dette' objekt og bruges til at få den faktiske runtime-klasse for objektet. Det kan også bruges til at hente metadata for denne klasse. Det returnerede klasseobjekt er det objekt, der er låst af statisk synkroniserede metoder af den repræsenterede klasse. Da det er endeligt, så tilsidesætter vi det ikke.
Eksempel:
Java // Demonstrate working of getClass() public class Geeks { public static void main ( String [] args ) { Object o = new String ( 'GeeksForGeeks' ); Class c = o . getClass (); System . out . println ( 'Class of Object o is: ' + c . getName ()); } }
Produktion
Class of Object o is: java.lang.String
Forklaring: De getClass() metode bruges til at udskrive runtime-klassen for 'o'-objektet.
Note: Efter indlæsning af en .class-fil vil JVM oprette et objekt af typen java.lang.Klasse i Heap-området. Vi kan bruge dette klasseobjekt til at få oplysninger på klasseniveau. Det er meget brugt i Afspejling
5. finalize() metode
De afslutte() metode kaldes lige før en genstand opsamles skrald. Det kaldes Skraldesamler på en genstand, når skraldemanden fastslår, at der ikke er flere referencer til objektet. Vi bør tilsidesætte finalize()-metoden for at bortskaffe systemressourcer, udføre oprydningsaktiviteter og minimere hukommelseslækager. For eksempel før ødelæggelse af Servlet-objekternes webcontainer kaldes altid færdiggørelsesmetode til at udføre oprydningsaktiviteter i sessionen.
Note: Finaliseringsmetoden kaldes bare engang på en genstand, selvom den pågældende genstand er berettiget til affaldsindsamling flere gange.
Eksempel:
Java // Demonstrate working of finalize() public class Geeks { public static void main ( String [] args ) { Geeks t = new Geeks (); System . out . println ( t . hashCode ()); t = null ; // calling garbage collector System . gc (); System . out . println ( 'end' ); } @Override protected void finalize () { System . out . println ( 'finalize method called' ); } }
Produktion
1510467688 end finalize method called
Forklaring: De afslutte() metode kaldes lige før genstanden er skrald opsamlet.
6. clone() metode
De klone() metoden opretter og returnerer et nyt objekt, der er en kopi af det aktuelle objekt.
Eksempel:
public class Bog implementerer Cloneable {
privat String t; //titel
offentlig bog(streng t) {
dette.t = t;
}
@Tilsidesæt
public Object clone() kaster CloneNotSupportedException {
returner super.clone();
}
}
Forklaring: De klone() metode tilsidesættes for at returnere en klonet kopi af Bogobjekt .
7. Samtidighedsmetoder: wait() notify() og notifyAll()
Disse metoder er relateret til tråd Kommunikation i Java . De bruges til at få tråde til at vente eller underrette andre i samtidig programmering.
Eksempel på brug af alle Object Class Methods i Java
Java import java.io.* ; public class Book implements Cloneable { private String t ; // title private String a ; // author private int y ; // year public Book ( String t String a int y ) { this . t = t ; this . a = a ; this . y = y ; } // Override the toString method @Override public String toString () { return t + ' by ' + a + ' (' + y + ')' ; } // Override the equals method @Override public boolean equals ( Object o ) { if ( o == null || ! ( o instanceof Book )) { return false ; } Book other = ( Book ) o ; return this . t . equals ( other . getTitle ()) && this . a . equals ( other . getAuthor ()) && this . y == other . getYear (); } // Override the hashCode method @Override public int hashCode () { int res = 17 ; res = 31 * res + t . hashCode (); res = 31 * res + a . hashCode (); res = 31 * res + y ; return res ; } // Override the clone method @Override public Book clone () { try { return ( Book ) super . clone (); } catch ( CloneNotSupportedException e ) { throw new AssertionError (); } } // Override the finalize method @Override protected void finalize () throws Throwable { System . out . println ( 'Finalizing ' + this ); } public String getTitle () { return t ; } public String getAuthor () { return a ; } public int getYear () { return y ; } public static void main ( String [] args ) { // Create a Book object and print its details Book b1 = new Book ( 'The Hitchhiker's Guide to the Galaxy' 'Douglas Adams' 1979 ); System . out . println ( b1 ); // Create a clone of the Book object and print its // details Book b2 = b1 . clone (); System . out . println ( b2 ); // Check if the two objects are equal System . out . println ( 'b1 equals b2: ' + b1 . equals ( b2 )); // Get the hash code of the two objects System . out . println ( 'b1 hash code: ' + b1 . hashCode ()); System . out . println ( 'b2 hash code: ' + b2 . hashCode ()); // Set book1 to null to trigger garbage collection // and finalize method b1 = null ; System . gc (); } }
Produktion
The Hitchhiker's Guide to the Galaxy by Douglas Adams (1979) The Hitchhiker's Guide to the Galaxy by Douglas Adams (1979) b1 equals b2: true b1 hash code: 1840214527 b2 hash code: 1840214527
Forklaring: Ovenstående eksempel viser brugen af toString() er lig med() hashCode() og klone() metoder i Bog klasse .