CodeBlanks Logo Icon CodeBlanks

this()

this() ile yapıcı çağırmayı öğrenirsin.

this() ile zincirleme

Bir yapıcının içinden aynı sınıftaki başka bir yapıcıyı this(...) ile çağırabilirsin. Buna yapıcı zincirleme denir. this() çağrısı yapıcı gövdesinin ilk satırı olmalıdır; aksi halde derleme hatası verir.

Örnek: class Box { int size; Box() { this(1); } Box(int s) { size = s; } }. Burada parametresiz yapıcı this(1) ile ikinci yapıcıyı çağırır. Bu yöntem, kod tekrarını önler; ortak mantık tek yapıcıda toplanır, diğerleri onu çağırır. Bakım daha kolaydır.

Neden this() kullanılır?

this() kod tekrarını azaltır. Bir yapıcıda yazdığın atama mantığını başka bir yapıcıda tekrar yazmak yerine this() ile onu çağırırsın. Tüm ortak mantık tek yerde kalır; değişiklik tek noktadan yapılır.

Örnek: Box() ve Box(int s) yapıcıları olsun. Box() içine size = 1; yazmak yerine this(1) yazarsın. size ataması yalnızca Box(int s) içinde kalır. size atama mantığı değişirse tek yapıcı güncellenir; iki yerde değişiklik yapılmaz.

Uygulama Box sınıfına this() ekle

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

Başlangıç kodu

Main.java
// Box sınıfını tanımla
// this() ile zincirleme yap
// main içinde ikisini de çağır

Örnek çözüm

Main.java
class Box {
    int size;
    Box(int s) {
        size = s;
    }
    Box() {
        this(1);
    }
    public static void main(String[] args) {
        Box a = new Box();
        Box b = new Box(5);
        System.out.println(a.size);
        System.out.println(b.size);
    }
}

Beklenen çıktı

1
5

Soru ve cevaplar

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

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

Soru
class Box {
    int size;
    Box() {
        ____(1);
    }
    Box(int s) { size = s; }
}
Cevap
class Box {
    int size;
    Box() {
        this(1);
    }
    Box(int s) { size = s; }
}

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

2 this() ilkelerini eşle

Kavram Anlamı
this() Yapıcı çağrısı
ilk satır Konum ilkesi
this(1) Parametreli çağrı
kod tekrarı Önlenen sorun

3 this() çağrısı nerede olmalıdır?

  • Sınıf dışında
  • Gövdenin ilk satırında Doğru cevap
  • Gövdenin ortasında
  • Gövdenin son satırında

Açıklama: Gövdenin ilk satırında — this() ilk satırda olmalı.

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