CodeBlanks Logo Icon CodeBlanks

Metot aşırı yükleme

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

Main.java
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

Main.java
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

Soru
static int add(int a, int b) { return a + b; }
static ____ add(double a, double b) { return a + b; }
Cevap
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ı

Başlangıç bölümündeki tüm dersler