Yapıcı aşırı yükleme
- Java kursu
- Orta seviye
- Ders 9/116
- 4 dk
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
// Rectangle sınıfını tanımla
// iki yapıcı ekle
// main içinde ikisini de çağırÖrnek çözüm
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
class Rectangle {
int w, h;
Rectangle() { w = 0; h = 0; }
____(int s) { w = s; h = s; }
}
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ı |