Menu
Coddy logo textTech

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, birkaç yararlı metot sağlayan Object sınıfından miras alır. En yaygın olarak geçersiz kılınanlardan biri, bir nesnenin dize temsilini döndüren toString() metodudur.

Varsayılan olarak, toString() sınıf adını ve ardından nesnenin karma kodunu döndürür; bu da pek yardımcı olmaz:

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@15db9742

toString() metodunu geçersiz kılarak, nesnenin durumunu açıklayan anlamlı bir çıktı sağlayabilirsiniz:

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 bir dizeyle birleştirdiğinizde toString() yöntemi otomatik olarak çağrılır. Bu, ekstra kod yazmadan bir nesnenin içeriğini hızlıca görebildiğiniz için hata ayıklamayı çok daha kolay hale getirir.

challenge icon

Görev

Kolay

Özel toString() uygulamalarını kullanarak öğeler hakkında anlamlı bilgiler görüntüleyen bir ürün envanter sistemi oluşturalım. Her ürünün net ve okunabilir bir temsilini sağlamak için varsayılan toString() metodunu geçersiz kılan (override) bir Product sınıfı oluşturacaksınız.

Kodunuzu iki dosya halinde düzenleyeceksiniz:

  • Product.java: Bir envanter öğesini temsil eden bir sınıf oluşturun. Her Product'ın üç özel (private) alanı vardır: name (String), price (double) ve quantity (int). Üç alanı da başlatan bir yapıcı (constructor) ekleyin. toString() metodunu, tam olarak şu formatta bir dize döndürecek şekilde geçersiz kılın: 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 bir biçimlendirme gerekmez).
  • Main.java: Ürünler oluşturup görüntüleyerek Product sınıfınıza hayat verin. Üç girdi alacaksınız: bir ürün adı (String), bir fiyat (double) ve bir miktar (int). Bu değerlerle bir Product oluşturun, ardından ürün nesnesini doğrudan System.out.println() kullanarak yazdırın. Geçersiz kıldığınız toString() metodunuz sayesinde, bu işlem karmaşık varsayılan çıktı yerine otomatik olarak biçimlendirilmiş ürün bilgilerini görüntüleyecektir!

Üç girdi alacaksınız: ürün adı (String), fiyat (double) ve miktar (int).

Nesneyi doğrudan yazdırmanın toString() metodunuzu otomatik olarak nasıl çağırdığına dikkat edin; gerçek uygulamalarda hata ayıklamayı ve günlük tutmayı (logging) bu kadar kolaylaştıran şey budur!

Kopya kağıdı

Java'daki her sınıf Object sınıfından miras alır. toString() metodu, bir nesnenin dize temsilini döndürür.

Varsayılan olarak, toString() sınıf adını ve ardından nesnenin karma kodunu (hash code) döndürür:

Person p = new Person("Alice", 25);
System.out.println(p);  // Person@15db9742

Anlamlı bir çıktı sağlamak için toString() metodunu geçersiz kılın (override):

@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 bir dize ile birleştirdiğinizde toString() metodu otomatik olarak çağrılır.

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: Giriş değerleriyle bir Product nesnesi oluşturun
        
        // TODO: Ürün nesnesini doğrudan yazdırın
        // (Bu, toString() metodunuzu otomatik olarak çağıracaktır!)
    }
}
quiz iconKendini test et

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