Metot aşırı yükleme
- Java kursu
- Başlangıç
- Ders 74/116
- 4 dk
Aynı isimli metotları öğrenirsin.
Metot aşırı yükleme
Aynı isimli ama farklı parametreli metotlar tanımlayabilirsin. Buna aşırı yükleme (overloading) denir. Derleyici, çağrıdaki parametre türlerine göre doğru metodu seçer.
static int add(int a, int b) {
return a + b;
}
static double add(double a, double b) {
return a + b;
}İmza (signature) = ad + parametre türleri. İmza farklı olduğu sürece aynı ismi tekrar kullanabilirsin. Dönüş türü imzaya dahil değildir.
Hangi aşırı yükleme çağrılır?
Çağrıdaki argüman türleri, derleyici tarafından en uygun imzaya eşleştirilir. Türler tam uyanıyorsa o metod seçilir; uymuyorsa otomatik genişleme (int → double) denenir.
add(3, 4); // int add(int, int)
add(3.0, 4.0); // double add(double, double)
add(3, 4.0); // double add(double, double)Son çağrıda bir int ve bir double var; int otomatik double'a genişletilir ve double versiyon seçilir. Belirsizlik olursa derleme hatası alırsın.
Uygulama İki versiyonlu add
İki add metodu tanımla: biri int add(int a, int b), diğeri double add(double a, double b). İkisi de toplamı döndürsün. main içinden add(3, 4) ve add(2.5, 1.5) çağırıp sonuçları ayrı satırlarda yazdır.
Başlangıç kodu
public class Main {
public static void main(String[] args) {
// Toplama metodunu iki farklı çağrıyla dene, sonuçları yazdır
}
// int add(int, int) metodunu tanımla
// double add(double, double) metodunu tanımla
}Örnek çözüm
static int add(int a, int b) { return a + b; }
static double add(double a, double b) { return a + b; }
// main içinde:
System.out.println(add(3, 4));
System.out.println(add(2.5, 1.5));Beklenen çıktı
7 4.0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Aşağıdaki çiftlerden hangisi aşırı yükleme oluşturur?
- int add(int a, int b) ve double add(double a, double b)
- int add(int a, int b) ve double add(int a, int b)
- int add(int a, int b) ve int add(int x, int y) Doğru cevap
- int add(int a, int b) ve int sum(int a, int b)
Açıklama: Parametre türleri farklıysa imza farklıdır.
2 Boşluğu doldur: double versiyon
static int add(int a, int b) { return a + b; }
static ____ add(double a, double b) { return a + b; }
static int add(int a, int b) { return a + b; }
static double add(double a, double b) { return a + b; }
Açıklama: double parametreli versiyon double döndürür.
3 Çağrı ve seçilen imza eşleştir
| Kavram | Anlamı |
|---|---|
add(3, 4) |
int versiyon seçilir |
add(3.0, 4.0) |
double versiyon seçilir |
add(3, 4.0) |
int double'a genişler |
add("a", "b") |
Derleme hatası |