Tüm Object sınıf yöntemleri ve ayrıca toString() yöntemiyle ilgili daha fazlası - 1

"Merhaba, Amigo!"

"MERHABA!"

"Bugün Object sınıfını inceleyeceğiz.
Bununla zaten karşılaştınız ve Object'in tüm sınıflar için temel sınıf olduğunu biliyorsunuz. Neredeyse hiç verisi yok ama birkaç yöntemi var."

"Neden yöntemlere ihtiyaç duyuyor? Gerçekten Object sınıfının örneklerini yaratan var mı?"

"Şu açıdan bakın: Object sınıfındaki yöntemler tüm sınıflarda ortaktır. Diğer bir deyişle, Java'nın yaratıcıları, kendilerine göre her sınıfta olması gereken birkaç yöntem belirlediler ve bunları Object sınıfına eklediler."

"Ve polimorfizm (türetilmiş sınıflarda Object sınıfının yöntemlerini geçersiz kılma yeteneği) ile birleştirildiğinde, bu çok güçlü bir araç haline gelir."

"Bu yöntemlerin neler olduğunu görelim:"

Yöntem Tanım
public String toString()
Nesnenin dize gösterimini döndürür.
public native int hashCode()
public boolean equals(Object obj)
Nesneleri karşılaştırmak için kullanılan bir çift yöntem.
public final native Class getClass()
Geçerli sınıfı tanımlayan özel bir nesne döndürür.
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()
Farklı iş parçacıklarından bir nesneye erişimi denetleme yöntemleri. İş parçacığı senkronizasyonu için.
protected void finalize()
Bu yöntem, yerel Java dışı kaynakları serbest bırakmanıza izin verir: dosyaları, akışları vb. kapatın.
protected native Object clone()
Bu yöntem, bir nesneyi klonlamanıza izin verir: nesnenin bir kopyasını oluşturur.

"Bu yöntemler 6 gruba ayrılabilir. Bazılarına zaten aşinasınız, gerisini de sonraki derslerde öğreneceğiz."

"Nedense burada yararlı bir şey göremiyorum."

"Amigo! Bu yöntemler önemli olmasaydı, onları her bir nesneye eklemezlerdi! O yüzden bunların ne olduğuna ve neden ihtiyaç duyulduğuna daha yakından bakmanı tavsiye ederim. Eğer sana önemsiz geliyorsa , o zaman ya bir şeyi anlamadın ya da bir şeyi doğru anlamadın."

"Tamam. Dikkatle dinleyeceğim."

"toString() yöntemiyle başlayalım.

"Bu yöntem, herhangi bir nesnenin metin açıklamasını almanızı sağlar. Nesne sınıfındaki uygulaması çok basittir:"

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

"getClass() ve hashCode() da Object sınıfının yöntemleridir.
Bu yöntemin çağrılması genellikle şöyle bir sonuç verir:"

java.lang.Object@12F456

"Peki böyle bir açıklamanın ne yararı var?"

"Bu açıklama, yöntemin çağrıldığı nesnenin sınıfını bilmenizi sağlar. Ayrıca nesneleri ayırt edebilirsiniz; farklı nesnelerin @ simgesinden sonra farklı rakamları olacaktır."

"Ancak bu yöntemin gerçek değeri başka yerde yatıyor. Daha ayrıntılı veya uygun bir nesne açıklaması döndürmek için bu yöntemin herhangi bir sınıfta üzerine yazılabilir."

"Ama dahası da var. Her nesnenin metin temsilini alabildiğiniz için Java, nesnelere Dizeler 'ekleme' desteğini uygulamanızı mümkün kıldı. Şuna bakın
:"

kod gerçekten ne oluyor
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);

"Evet, bunu düzenli olarak kullanıyorum. Özellikle program yazarken veya böcek ararken. Yararlı bir işlem."