JavaRush /Kurslar /All lectures for UZ purposes /Object sinfining barcha metodlari, toString() metodi

Object sinfining barcha metodlari, toString() metodi

All lectures for UZ purposes
Daraja, Dars
Mavjud
Object sinfining barcha metodlari, toString() metodi - 1

— Salom, Amigo!

— Salom!

— Bugun biz Object sinfini o'rganamiz.
Sen uni allaqachon uchratgan bo'lishing mumkin va bilasan, Object barcha sinflar uchun asosiy sinf. Unda deyarli hech qanday ma'lumot yo'q, ammo bir nechta metodlar bor.

— Unda metodlar nimaga kerak? Kimdir uning obyektlarini yaratadi, deganmisan?

— Bu holatga shunday qarang – Object’da mavjud bo'lgan metodlar, aslida barcha sinflarda mavjud. Ya'ni, Java dasturchilari barcha sinflarda bo'lishi kerak deb hisoblagan bir nechta metodlarni tanlab, ularni Object sinfiga qo'shishgan.

Polimorfizm – Object sinfining metodlarini merosxo‘r sinflarda qayta aniqlash imkoniyati – bilan bu juda kuchli vositani hosil qiladi.

Keling, bu qanday metodlar ekanligini ko'rib chiqaylik:

Метод Тавсиф
public String toString()
Obyektning matnli tasvirini qaytaradi.
public native int hashCode()
public boolean equals(Object obj)
Obyektlarni taqqoslash uchun ishlatiladigan metodlar juftligi.
public final native Class getClass()
Amaldagi sinfni tavsiflovchi maxsus obyektni qaytaradi.
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()
Obyektga turli tarmoqlardan kirishni boshqarish uchun metodlar. Tarmoqlarni sinxronlashni boshqarish.
protected void finalize()
Metod, Java bo'lmagan resurslarni "bo'shatish" imkonini beradi: fayllarni yopish, oqimlar va h.k.
protected native Object clone()
Obyektni ko'paytirish imkonini beruvchi metod: obyektni dublikatini yaratadi.

Metodlar 6 guruhga bo'linishi mumkin. Ba'zilari bilan allaqachon tanishsan, qolganlari bilan esa kelgusi darslarda tanishib chiqamiz.

— Bu yerda foydali narsani ko'rmayapman.

— Amigo! Agar bu metodlar muhim bo'lmasa, ularni barcha obyektlarga kiritishmasdi! Shuning uchun men senga tavsiya qilaman – bu nima ekanligini va ular nimaga kerakligini yaxshilab tushunib oling. Agar ular muhim emasdek tuyulsa, demak, nimanidir noto'g'ri tushungansan.

— Ok. Men diqqat bilan eshitaman.

— toString() metodidan boshlaymiz;

Bu metod har qanday obyektdan matnli tavsif olish imkonini beradi. Object sinfida uning amaliyoti juda oddiy:

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

getClass() va hashCode() – bu ham Object sinfining metodlari.
Mana, ushbu metodni chaqirishning standart natijasi

java.lang.Object@12F456

— Bu tasvir qanday foydali bo'lishi mumkin?

— Bunday tavsifdan ushbu metod chaqirilgan obyektning sinfini bilib olish mumkin. Shuningdek, obyektlarni farqlash mumkin – har xil obyektlarga @ belgidan keyin har xil raqamlar mos keladi.

Lekin ushbu metodning qiymati boshqa joyda. Ushbu metod har qanday sinfda qayta aniqlanib, obyektning yanada kerakli yoki batafsil tavsifini qaytarishi mumkin.

Aynan shuningdek, har bir obyekt uchun uning matnli tasvirini olish mumkin, shuning uchun Java'da stringlar va obyektlarning "qo‘shilishi"ni qo‘llab-quvvatlash amalga oshirilgan.
Mana, ko'rib chiqing:

Kod Aslida nima sodir bo'ladi
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("Vasya");
System.out.println("Student is " + st);

Student st = new Student("Vasya");
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);

— Ha, men doim undan foydalanaman. Ayniqsa, dastur yozayotganda yoki unda xatolarni qidirayotganda. Foydali metod

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION