🚀 BAŞTAN SONA JAVA DİLİ BÖLÜM-5: Metotlar (Methods) ve Method Overloading 🛠️

Konu Özeti

Java'da metot tanımlama, void ve değer döndüren metot yapıları, return kullanımı, method overloading kuralları, değişken sayıda parametre alan varargs yapısı ve pass-by-value ilkesi örneklerle açıklanıyor. Kod tekrarını önleyen modüler yapı, aynı isimli metotların farklı parametrelerle aşırı yüklenmesi ve ilkel tiplerin metotlara kopyalanarak geçirilmesi ele alınıyor.

🚀 BAŞTAN SONA JAVA DİLİ BÖLÜM-5: Metotlar (Methods) ve Method Overloading 🛠️

Selamlar! Serimizin 5. bölümüne hoş geldiniz.

Önceki bölümde `for`, `while` ve `do-while` döngülerini, `break`/`continue` ifadelerini ve etiketli döngü yapılarını incelemiştik. Bu bölümde ise kodlarımızı modüler hale getiren, tekrarı önleyen (DRY - Don't Repeat Yourself) ve okunabilirliği artıran **Metotları (Methods)**, **Method Overloading** kavramını ve **`varargs`** kullanımını öğreneceğiz.

---

📌 1. Metot (Method) Nedir ve Nasıl Tanımlanır? ⚙️

Metot, belirli bir görevi yerine getirmek için gruplanmış kod bloğudur. Diğer dillerdeki "fonksiyon" (function) kavramının Java'daki karşılığıdır.

Metot Tanımlama Syntax'ı:
`ErişimBelirteci Niteleyici DönüşTipi MetotAdı(Parametreler) { // Gövde }`

public class Main {
// 1. Değer Dönüştürmeyen (void) Parametresiz Metot
public static void selamla() {
System.out.println("Java Eğitim Serisine Hoş Geldiniz! ☕");
}

// 2. Değer Dönüştürmeyen (void) Parametreli Metot
public static void kisiyeOzelSelam(String isim) {
System.out.println("Merhaba " + isim + ", başarılar dileriz!");
}

// 3. Değer Döndüren (`return`) Parametreli Metot
public static int topla(int sayi1, int sayi2) {
return sayi1 + sayi2;
}

public static void main(String[] args) {
// Metotları Çağırma (Method Call)
selamla();
kisiyeOzelSelam("Ahmet");

int sonuc = topla(15, 25);
System.out.println("Toplama Sonucu: " + sonuc);
}
}

---

🔄 2. `return` İfadesi ve Dönüş Tipleri 🔄

• **`void` Metotlar:** Bir işlem yapar ancak geriye bir değer çağıran yere aktarmaz.
• **Veri Tipi Döndüren Metotlar (`int`, `String`, `boolean` vb.):** İşlem sonucunda üretilen değeri `return` anahtar kelimesi ile geriye aktarır.

public class Main {
// Yaşın reşit olup olmadığını belirleyen boolean dönüşlü metot
public static boolean resitMi(int yas) {
if (yas >= 18) {
return true;
} else {
return false;
}
// Kısaca: return yas >= 18;
}

public static void main(String[] args) {
boolean kontrol = resitMi(20);

if (kontrol) {
System.out.println("Kullanıcı reşittir.");
} else {
System.out.println("Kullanıcı henüz reşit değildir.");
}
}
}

---

🔀 3. Metot Aşırı Yükleme (Method Overloading) 🎛️

Java'da **aynı isme sahip** birden fazla metot tanımlanabilir. Buna **Method Overloading** denir.

### Overloading Kuralları:
1. Metot isimleri **aynı** olmalıdır.
2. Parametre **sayısı** VEYA parametre **veri tipleri** farklı olmalıdır (Metot İmzası / Method Signature farklı olmalıdır).
3. Yalnızca dönüş tipini (`return type`) değiştirmek overloading için YETERLİ DEĞİLDİR!

public class Main {
// 1. İki tam sayıyı toplayan metot
public static int hesapla(int a, int b) {
return a + b;
}

// 2. Üç tam sayıyı toplayan metot (Parametre sayısı farklı)
public static int hesapla(int a, int b, int c) {
return a + b + c;
}

// 3. İki ondalıklı sayıyı toplayan metot (Parametre tipi farklı)
public static double hesapla(double a, double b) {
return a + b;
}

public static void main(String[] args) {
System.out.println("2 Tam Sayı Toplamı: " + hesapla(5, 10));
System.out.println("3 Tam Sayı Toplamı: " + hesapla(5, 10, 15));
System.out.println("2 Ondalıklı Toplam: " + hesapla(3.5, 2.5));
}
}

---

📦 4. Değişken Sayıda Parametre: `varargs` (`...`) 🎲

Bir metoda kaç tane parametre gönderileceği önceden belli değilse `varargs` (Variable Arguments) yapısı kullanılır. Parametre tipinin yanına üç nokta `...` konularak tanımlanır.

`varargs` metot içinde bir **Dizi (Array)** gibi davranır.

⚠️ **Kural:** Bir metotta `varargs` parametresi her zaman **en sonda (en son parametre olarak)** yer almalıdır!

public class Main {
// İstendiği kadar sayıyı parametre olarak alıp toplayan metot
public static int cokluTopla(int... sayilar) {
int toplam = 0;
for (int sayi : sayilar) {
toplam += sayi;
}
return toplam;
}

public static void main(String[] args) {
System.out.println("2 Sayı: " + cokluTopla(10, 20));
System.out.println("4 Sayı: " + cokluTopla(5, 10, 15, 20));
System.out.println("Hiç sayı gönderilmezse: " + cokluTopla());
}
}

---

🧠 5. Pass-by-Value (Değer İle Çağırma) Mantığı 📍

Java'da metotlara parametre geçirilirken her zaman **Pass-by-Value** kuralı geçerlidir.

İlkel (primitive) bir değişken bir metoda parametre olarak verildiğinde, değişkenin kendisi değil **değerinin bir kopyası** metoda gönderilir. Metot içindeki değişiklikler orijinal değişkeni etkilemez!

public class Main {
public static void degeriDegistir(int x) {
x = 99; // Sadece yerel kopya değişir
}

public static void main(String[] args) {
int sayi = 10;
degeriDegistir(sayi);
System.out.println("Main İçi Sayı Değeri: " + sayi); // Halen 10'dur!
}
}

---

📝 Bölüm Özeti ve Gelecek Bölüm 🔮

Bu bölümde modüler metot yapısını, `return` mekanizmasını, Method Overloading kurallarını, `varargs` kullanımını ve Java'daki Pass-by-Value ilkesini öğrendik.

👉 **Bölüm 6'da Bizi Ne Bekliyor?**
• Nesne Yönelimli Programlamaya (OOP) Giriş 🧱
• Sınıf (Class) ve Nesne (Object) Kavramları
• Özellikler (Fields) ve Metotlar
• `new` Anahtar Ke
limesi ve Bellek Yerleşimi (Stack & Heap)
• `this` Anahtar Kelimesi Kullanımı

Sorularınızı konu altından iletebilirsiniz. Bir sonraki bölümde görüşmek üzere! ☕✨

🔒 Bu içeriği görmek için giriş yapın

 
Yanıt yazmak için giriş yapmalısınız
Forum özelliklerini kullanmak ve Level 2 üyelik satın almak için hesabınıza giriş yapın.
135,050Konular
3,297,703Mesajlar
326,234Kullanıcılar
makberSon Üye
Üst Alt