CodeBlanks Logo Icon CodeBlanks

Yapıcı aşırı yükleme

Aynı sınıfta birden çok yapıcıyı öğrenirsin.

Yapıcı aşırı yükleme

Bir sınıfta birden çok yapıcı tanımlanabilir; buna aşırı yükleme (overloading) denir. Her yapıcının parametre listesi farklı olmalıdır: parametre sayısı, türü veya sırası değişebilir. Hangi yapıcının çağrılacağı parantez içindeki değerlere göre belirlenir.

Örnek: class Rectangle { int w, h; Rectangle() { w = 0; h = 0; } Rectangle(int s) { w = s; h = s; } }. Burada iki yapıcı vardır. new Rectangle() birinciyi, new Rectangle(5) ikinciyi çağırır. Aşırı yükleme, esnek örnek oluşturma sağlar; farklı durumlarda farklı değerlerle örneği hazırlar.

Hangi yapıcı çağrılır?

Java, çağrıdaki parametre sayısına ve türlerine bakarak hangi yapıcının çalışacağına karar verir. Eşleşen tek bir yapıcı varsa onu çağırır. Eşleşen yoksa veya birden çok belirsiz eşleşme varsa derleme hatası verir.

Örnek: new Rectangle() parametresiz yapıcıyı, new Rectangle(5) tek parametreli yapıcıyı çağırır. new Rectangle(5, 3) ise yalnızca iki parametreli bir yapıcı varsa çalışır. Tür dönüştürme de dikkate alınır; new Rectangle(5.0) çağrısı int parametreli yapıcıya uymaz.

Uygulama Rectangle sınıfına iki yapıcı ekle

Rectangle adında bir sınıf tanımla. İçine int w ve int h alanlarını ekle. İki yapıcı yaz: birincisi parametresiz, ikisi de sıfır olsun; ikincisi int s parametresi alsın, w ve h alanlarına s atansın. main içinde her iki yapıcıyı da çağır, w alanlarını ayrı satırlarda yazdır.

Başlangıç kodu

Main.java
// Rectangle sınıfını tanımla
// iki yapıcı ekle
// main içinde ikisini de çağır

Örnek çözüm

Main.java
class Rectangle {
    int w;
    int h;
    Rectangle() {
        w = 0;
        h = 0;
    }
    Rectangle(int s) {
        w = s;
        h = s;
    }
    public static void main(String[] args) {
        Rectangle a = new Rectangle();
        Rectangle b = new Rectangle(5);
        System.out.println(a.w);
        System.out.println(b.w);
    }
}

Beklenen çıktı

0
5

Soru ve cevaplar

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

1 Aşırı yükleme için hangisi doğrudur?

  • İki yapıcının parametre listesi aynı olmalı
  • Yapıcılar dönüş türü almalı
  • Sınıfta tek yapıcı bulunmalı
  • İki yapıcının parametre listesi farklı olmalı Doğru cevap

Açıklama: Aşırı yüklemede her yapıcının parametre listesi farklı olmalıdır.

2 İkinci yapıcıyı tamamla

Soru
class Rectangle {
    int w, h;
    Rectangle() { w = 0; h = 0; }
    ____(int s) { w = s; h = s; }
}
Cevap
class Rectangle {
    int w, h;
    Rectangle() { w = 0; h = 0; }
    Rectangle(int s) { w = s; h = s; }
}

Açıklama: İkinci yapıcı da sınıf ismiyle tanımlanır.

3 Çağrı ve yapıcı eşle

Kavram Anlamı
new Rectangle() Parametresiz yapıcı
new Rectangle(5) Tek parametreli yapıcı
new Rectangle(5, 3) İki parametreli yapıcı

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