CodeBlanks Logo Icon CodeBlanks

Özet - Yapıcı

Parametreli yapıcı ve this()'i birleştirerek bir Product sınıfı yazarsın.

Özet - Yapıcı

Bu grupta yapıcı temellerini, parametreli yapıcıyı, aşırı yüklemeyi, this() ile zincirlemeyi ve varsayılan yapıcıyı öğrendin. Yapıcı, örneğin oluşturulurken ilk değer almasını sağlar; ismi sınıf ismiyle aynıdır, dönüş türü yoktur.

Şimdi tüm bunları bir araya getireceksin: bir sınıf tanımla, birden çok yapıcı ekle, this() ile zincirle ve örnekleri yazdır. Yapıcılar, nesne yönelimli tasarımda temiz bir başlangıç sağlar; elle alan atamasını azaltır.

Uygulama Timer sınıfını tanımla

Timer adında bir sınıf tanımla. İçine int seconds alanını ekle. İki yapıcı yaz: birincisi Timer(int s), seconds = s; ata; ikincisi Timer(), this(60) ile birinciyi çağır. main içinde her iki yapıcıyı da çağır, seconds alanlarını ayrı satırlarda yazdır.

Başlangıç kodu

Main.java
// Timer sınıfını tanımla
// iki yapıcı ve this() ekle
// main içinde ikisini de çağır

Örnek çözüm

Main.java
class Timer {
    int seconds;
    Timer(int s) {
        seconds = s;
    }
    Timer() {
        this(60);
    }
    public static void main(String[] args) {
        Timer a = new Timer();
        Timer b = new Timer(30);
        System.out.println(a.seconds);
        System.out.println(b.seconds);
    }
}

Beklenen çıktı

60
30

Sırada ne var?

Yapıcıları öğrendin. Sonraki gruplarda miras (inheritance) ile sınıflar arasında kod paylaşmayı, üst sınıf yapıcısı çağrısını (super) ve metot geçersiz kılmayı (override) göreceksin. Bunlar, sınıf hiyerarşilerinin temelidir.

Bu grup; yapıcı tanımı, parametreli çağrı, aşırı yükleme ve this() zincirini birleştirdi. Bunlar nesne oluşturmanın temelidir. Bir sonraki adımda miras ile sınıflar arası ilişki kuracaksın; üst sınıfın alan ve metotlarını alt sınıfa aktaracaksın.

Uygulama Counter sınıfını tanımla

Counter adında bir sınıf tanımla. İçine int count alanını ekle. İki yapıcı yaz: birincisi Counter(int c), count = c; ata; ikincisi Counter(), this(0) ile birinciyi çağır. public String toString() metodunu ekle; "Sayaç: " + count döndürsün. main içinde her iki yapıcıyı da çağır, her örneği println ile yazdır.

Başlangıç kodu

Main.java
// Counter sınıfını tanımla
// iki yapıcı, this() ve toString ekle
// main içinde örnekle ve yazdır

Örnek çözüm

Main.java
class Counter {
    int count;
    Counter(int c) {
        count = c;
    }
    Counter() {
        this(0);
    }
    public String toString() {
        return "Sayaç: " + count;
    }
    public static void main(String[] args) {
        Counter a = new Counter();
        Counter b = new Counter(5);
        System.out.println(a);
        System.out.println(b);
    }
}

Beklenen çıktı

Sayaç: 0
Sayaç: 5

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir sınıfta yapıcı tanımlanmadıysa ne olur?

  • Derleme hatası verir
  • Java boş varsayılan yapıcı ekler Doğru cevap
  • Sınıf çalışmaz
  • Tüm alanlar silinir

Açıklama: Java boş varsayılan yapıcı ekler — new ile çağrı çalışır.

2 this() çağrısını tamamla

Soru
class Timer {
    int seconds;
    Timer(int s) { seconds = s; }
    Timer() {
        ____(60);
    }
}
Cevap
class Timer {
    int seconds;
    Timer(int s) { seconds = s; }
    Timer() {
        this(60);
    }
}

Açıklama: this(60) ile parametreli yapıcı çağrılır.

Orta seviye bölümündeki tüm dersler