toString() Metodu
Coddy'nin Java Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 41 / 87.
Java’daki her sınıf, çeşitli kullanışlı yöntemler sağlayan Object sınıfından kalıtım alır. En sık geçersiz kılınan yöntemlerden biri, bir nesnenin dize gösterimini döndüren toString() yöntemidir.
Varsayılan olarak toString(), sınıf adını ve ardından nesnenin karma kodunu döndürür; bu pek yararlı değildir:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
Person p = new Person("Alice", 25);
System.out.println(p); // Person@15db9742toString() yöntemini geçersiz kılarak nesnenin durumunu açıklayan anlamlı bir çıktı sağlayabilirsin:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person[name=" + name + ", age=" + age + "]";
}
}
Person p = new Person("Alice", 25);
System.out.println(p); // Person[name=Alice, age=25]Bir nesneyi yazdırdığınızda veya onu bir dizeyle birleştirdiğinizde toString() yöntemi otomatik olarak çağrılır. Bu, hata ayıklamayı çok daha kolay hâle getirir; çünkü ek kod yazmadan bir nesnenin içeriğini hızlıca görebilirsiniz.
Görev
KolayÖzel toString() uygulamalarını kullanarak öğeler hakkında anlamlı bilgiler görüntüleyen bir ürün envanteri sistemi oluşturalım. Her ürünün açık ve okunabilir bir gösterimini sağlamak için varsayılan toString() metodunu geçersiz kılan bir Product sınıfı oluşturacaksın.
Kodunu iki dosyaya ayıracaksın:
Product.java: Bir envanter öğesini temsil eden bir sınıf oluştur. Her Product üç özel alana sahiptir:name(String),price(double) vequantity(int). Üç alanın tümünü başlatan bir kurucu ekle.toString()metodunu, tam olarak şu biçimde biçimlendirilmiş bir dize döndürecek şekilde geçersiz kıl:Product[name=X, price=Y, quantity=Z]; burada X, Y ve Z gerçek alan değerleridir. Fiyat, düz bir sayı olarak görüntülenmelidir (özel biçimlendirme gerekmez).Main.java: Ürünler oluşturarak ve görüntüleyerek Product sınıfını çalışır hâle getir. Üç girdi alacaksın: bir ürün adı (String), bir fiyat (double) ve bir miktar (int). Bu değerlerle bir Product oluştur, ardındanSystem.out.println()kullanarak ürün nesnesini doğrudan yazdır. Geçersiz kıldığıntoString()metodun sayesinde bu işlem, anlaşılması zor varsayılan çıktı yerine biçimlendirilmiş ürün bilgilerini otomatik olarak görüntüleyecek!
Üç girdi alacaksın: ürün adı (String), fiyat (double) ve miktar (int).
Nesneyi doğrudan yazdırmanın toString() metodunu otomatik olarak çağırdığına dikkat et. Gerçek uygulamalarda hata ayıklamayı ve günlük kaydını çok daha kolay hâle getiren şey budur!
Kendin dene
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Girdileri oku
String name = scanner.nextLine();
double price = scanner.nextDouble();
int quantity = scanner.nextInt();
// TODO: Girdi değerleriyle bir Product nesnesi oluştur
// TODO: Product nesnesini doğrudan yazdır
// (Bu otomatik olarak toString() metodunuzu çağıracaktır!)
}
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici DosyalarOOP'ye GirişSınıflar ve Nesnelerthis Anahtar KelimesiMetotlarAlanlar (Öznitelikler)Yapıcı MetotYapıcı Metot Aşırı YüklemeÖzet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtım (extends)super Anahtar KelimesiMetot Geçersiz Kılma (@Override)Yapıcı Metot ZincirlemeObject SınıfıTekli ve Çok Seviyeli KalıtımNeden Çoklu Sınıf Kalıtımı Yok?Özet - Çalışan Hiyerarşisi7Özel Metotlar ve Object Sınıfı
toString() Metoduequals() ve hashCode()clone() MetoducompareTo() ve ComparableComparator ArayüzüÖzet - Özel Sıralama2Erişim Belirleyiciler ve Kapsülleme
Erişim Seviyelerine Genel BakışGetter ve Setter MetotlarıBilgi Gizlemefinal Anahtar KelimesiÖzet - Banka Hesabı Yöneticisi5Polimorfizm
Metot Aşırı Yükleme TemelleriMetot Geçersiz Kılma (Çalışma Zamanı)Upcasting ve Downcastinginstanceof OperatörüSoyut Sınıflar ve MetotlarÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kompozisyon vs KalıtımAgregasyon vs KompozisyonDahili, Yuvalanmış ve Anonim SınıflarEnum'lar ve Enum MetotlarıRecords (Java 16+)Sealed Classes (Java 17+)11Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişSingleton KalıbıFactory KalıbıBuilder KalıbıObserver KalıbıStrategy Kalıbı14Final Meydan Okumaları
E-Öğrenme PlatformuBankacılık SistemiOyun Karakteri GeliştirmeAraç Kiralama Servisi3Sınıf Özellikleri ve Statik Üyeler
Instance ve Statik DeğişkenlerStatik MetotlarStatik BloklarSabitler (static final)Özet - Sayaç ve Utility6Arayüzler ve Soyut Sınıflar
Arayüzlere GirişArayüzleri UygulamaÇoklu Arayüz UygulamaArayüzlerde Default ve StaticSoyut Sınıflar ve ArayüzlerFonksiyonel ArayüzlerÖzet - Ödeme Sistemi9Generics
Generics'e GirişGeneric SınıflarGeneric MetotlarSınırlandırılmış Tip ParametreleriWildcard'lar (?, extends, super)Özet - Generic Container12Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit KalıbıYineleyici KalıbıKendi başına pratik yap: Online Java derleyicisi