Az összes Object osztály metódus, plusz még a toString() metódus - 1

– Szia Amigo!

"Szia!"

"Ma az Object osztályt fogjuk tanulmányozni.
Ön már találkozott vele, és tudja, hogy az Object az összes osztály alaposztálya. Gyakorlatilag nincs adata, de számos módszere van."

"Miért kell hozzá metódus? Valóban létrehoz valaki példányokat az Object osztályból?"

"Nézd meg így: az Object osztály metódusai minden osztályban közösek. Más szóval, a Java készítői több olyan metódust is azonosítottak, amelyekkel véleményük szerint minden osztálynak rendelkeznie kell, és hozzáadták az Object osztályhoz."

"És ha kombinálják a polimorfizmussal (az Object osztály metódusainak felülbírálásának képessége a származtatott osztályokban), ez nagyon hatékony eszközzé válik."

"Lássuk, mik ezek a módszerek:

Módszer Leírás
public String toString()
Az objektum karakterlánc-ábrázolását adja vissza.
public native int hashCode()
public boolean equals(Object obj)
Az objektumok összehasonlítására használt módszerpár.
public final native Class getClass()
Egy speciális objektumot ad vissza, amely leírja az aktuális osztályt.
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()
Módszerek egy objektumhoz való hozzáférés szabályozására különböző szálakból. A szál szinkronizálásához.
protected void finalize()
Ezzel a módszerrel natív, nem Java-erőforrásokat szabadíthat fel: zárja be a fájlokat, adatfolyamokat stb.
protected native Object clone()
Ezzel a módszerrel klónozhat egy objektumot: létrehozza az objektum másolatát.

"Ezek a módszerek 6 csoportra oszthatók. Néhányat már ismersz, a többivel a következő leckéken fogunk megismerkedni."

– Valamiért nem látok itt semmi hasznosat.

"Amigo! Ha ezek a módszerek nem lennének fontosak, nem adták volna hozzá őket minden egyes objektumhoz! Szóval azt tanácsolom, hogy nézze meg alaposabban, mik ezek, és miért van rájuk szükség. Ha nem tűnnek fontosnak az Ön számára , akkor vagy valamit nem értettél meg, vagy valamit nem értettél meg jól."

"Rendben. Figyelmesen hallgatok."

"Kezdjük a toString() metódussal.

"Ez a metódus lehetővé teszi bármely objektum szöveges leírását. A megvalósítása az Object osztályban nagyon egyszerű:"

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

"A getClass() és a hashCode() szintén az Object osztály metódusai.
Ennek a metódusnak a meghívása általában a következőhöz hasonló eredményt ad:"

java.lang.Object@12F456

– És mire jó egy ilyen leírás?

"Ez a leírás megmutatja annak az objektumnak az osztályát, amelyet a metódus hívott. Különbséget is tehet az objektumok között; a különböző objektumok különböző számjegyekkel rendelkeznek a @ szimbólum után."

"De ennek a metódusnak az igazi értéke máshol van. Ez a metódus bármelyik osztályban felülírható, hogy részletesebb vagy megfelelőbb objektumleírást adjon vissza."

"De van még több is. Mivel minden objektumról szöveges megjelenítést kaphat, a Java lehetővé tette, hogy támogatást valósítson meg a karakterláncok objektumokhoz való "adásához". Nézze
meg:"

Kód Mi történik valójában
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);

"Igen, ezt rendszeresen használom. Főleg, ha programot írok, vagy hibákat keresek. Hasznos művelet."