-
Sadrazamv4
instagram:sadrazam.spy Tg:Sadrazamv4
🚀 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! ☕✨
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