-
Sadrazamv4
ig:sadrazam_v4 tg: Sadrazam.spy
🚀 BAŞTAN SONA JAVA DİLİ BÖLÜM-7: Yapıcı Metotlar (Constructors) ve Garbage Collector 🏗️
Selamlar! Serimizin 7. bölümüne hoş geldiniz.
Önceki bölümde Nesne Yönelimli Programlamaya (OOP) giriş yaparak Sınıf ve Nesne kavramlarını, Stack/Heap bellek ayrımını ve `this` anahtar kelimesini incelemiştik. Bu bölümde ise nesnelerimiz doğarken ilk değerlerini atamamızı sağlayan **Yapıcı Metotları (Constructors)**, **Constructor Chaining** tekniğini ve Java'nın bellek temizleyicisi olan **Garbage Collector** yapısını öğreneceğiz.
---
📌 1. Yapıcı Metot (Constructor) Nedir? ⚙️
Constructor, bir sınıftan `new` anahtar kelimesi ile yeni bir nesne türetildiği anda **otomatik olarak çalışan** özel bir metottur.
Temel amacı, nesnenin durum değişkenlerine (fields) ilk değerlerini (initial states) atamak ve gerekli başlangıç ayarlarını yapmaktır.
### Constructor Kuralları:
1. Adı, tanımlandığı **Sınıf Adı ile BIREBIR AYNI** olmak zorundadır.
2. **Dönüş tipi YOKTUR** (`void` dahi yazılmaz!).
3. Bir sınıfta birden fazla constructor aşırı yüklenebilir (Overloading).
---
🏗️ 2. Default ve Parametreli Constructor 🛠️
Eğer sınıfınızda hiçbir constructor tanımlamazsanız, Java derleyicisi arka planda parametresiz ve içi boş bir **Default (Varsayılan) Constructor** otomatik olarak oluşturur. Ancak kendiniz bir constructor yazarsanız, default constructor iptal olur.
### Sınıf Tanımı (`Kitap.java`):
public class Kitap {
String ad;
String yazar;
int sayfaSayisi;
double fiyat;
// 1. Parametresiz Yapıcı Metot (No-Arg Constructor)
public Kitap() {
this.ad = "Bilinmeyen Kitap";
this.yazar = "Anonim";
this.sayfaSayisi = 0;
this.fiyat = 0.0;
System.out.println("Parametresiz constructor çalıştı.");
}
// 2. Parametreli Yapıcı Metot (Constructor Overloading)
public Kitap(String ad, String yazar, int sayfaSayisi, double fiyat) {
this.ad = ad;
this.yazar = yazar;
this.sayfaSayisi = sayfaSayisi;
this.fiyat = fiyat;
System.out.println("Parametreli constructor çalıştı: " + ad);
}
public void bilgileriYazdir() {
System.out.println("Kitap: " + ad + " | Yazar: " + yazar + " | Sayfa: " + sayfaSayisi + " | Fiyat: " + fiyat + " TL");
}
}
### Kullanımı (`Main.java`):
public class Main {
public static void main(String[] args) {
// Parametresiz constructor ile nesne oluşturma
Kitap k1 = new Kitap();
k1.bilgileriYazdir();
System.out.println();
// Parametreli constructor ile nesne oluşturma
Kitap k2 = new Kitap("Suç ve Ceza", "Dostoyevski", 687, 145.50);
k2.bilgileriYazdir();
}
}
---
🔗 3. `this()` İle Yapıcı Metot Zincirleme (Constructor Chaining) ⛓️
Bir constructor içinden aynı sınıftaki başka bir constructor'ı çağırmak için **`this(...)`** yapısı kullanılır.
⚠️ **Kritik Kural:** `this()` çağrısı, constructor gövdesindeki **ILK SATIRDA** yer almak ZORUNDADIR!
public class Oyuncu {
String kullaniciAdi;
int seviye;
int puan;
// Tek parametreli constructor
public Oyuncu(String kullaniciAdi) {
// Diğer 3 parametreli constructor'ı varsayılan değerlerle çağırır
this(kullaniciAdi, 1, 0);
}
// Tüm parametreleri alan ana constructor
public Oyuncu(String kullaniciAdi, int seviye, int puan) {
this.kullaniciAdi = kullaniciAdi;
this.seviye = seviye;
this.puan = puan;
}
public void profilGoster() {
System.out.println("Oyuncu: " + kullaniciAdi + " | Seviye: " + seviye + " | Puan: " + puan);
}
}
---
🧹 4. Garbage Collector (Çöp Toplayıcı) Mantığı 🧼
C++ gibi dillerde Heap bellekten tahsis edilen nesnelerin elle (`free` / `delete`) silinmesi gerekir. Aksi halde bellek sızıntıları (Memory Leak) oluşur.
Java'da ise bu işlem tamamen otomatiktir!
**Garbage Collector (GC):** JVM içinde arka planda çalışan ve Heap alanında **artık hiçbir referansı kalmayan (unreferenced)** yetim nesneleri tespit edip bellekten otomatik olarak temizleyen mekanizmadır.
public class Main {
public static void main(String[] args) {
Kitap k1 = new Kitap("1984", "George Orwell", 328, 120.0);
// k1 referansı artık başka bir nesneyi işaret ediyor!
// Eski "1984" nesnesi Heap'te referanssız kaldı.
k1 = new Kitap("Simyacı", "Paulo Coelho", 184, 95.0);
// Artık "1984" nesnesine erişilemez.
// Garbage Collector uygun bir zamanda onu bellekten siler.
}
}
---
📝 Bölüm Özeti ve Gelecek Bölüm 🔮
Bu bölümde Yapıcı Metotların çalışma felsefesini, Overloading ilkelerini, `this()` ile zincirleme constructor kullanımını ve Garbage Collector mekanizmasını öğrendik.
👉 **Bölüm 8'de Bizi Ne Bekliyor?**
• OOP'nin 4 Ana Temelinden İlki: **Encapsulation (Kapsülleme)** 🛡️
• Erişim Belirteçleri (`public`, `private`, `protected`, default)
• **Getter ve Setter** Metotları
• Salt Okun
ur (Read-Only) ve Salt Yazılır (Write-Only) Sınıflar
Sorularınızı konu altından iletebilirsiniz. Bir sonraki bölümde görüşmek üzere! ☕✨
Selamlar! Serimizin 7. bölümüne hoş geldiniz.
Önceki bölümde Nesne Yönelimli Programlamaya (OOP) giriş yaparak Sınıf ve Nesne kavramlarını, Stack/Heap bellek ayrımını ve `this` anahtar kelimesini incelemiştik. Bu bölümde ise nesnelerimiz doğarken ilk değerlerini atamamızı sağlayan **Yapıcı Metotları (Constructors)**, **Constructor Chaining** tekniğini ve Java'nın bellek temizleyicisi olan **Garbage Collector** yapısını öğreneceğiz.
---
📌 1. Yapıcı Metot (Constructor) Nedir? ⚙️
Constructor, bir sınıftan `new` anahtar kelimesi ile yeni bir nesne türetildiği anda **otomatik olarak çalışan** özel bir metottur.
Temel amacı, nesnenin durum değişkenlerine (fields) ilk değerlerini (initial states) atamak ve gerekli başlangıç ayarlarını yapmaktır.
### Constructor Kuralları:
1. Adı, tanımlandığı **Sınıf Adı ile BIREBIR AYNI** olmak zorundadır.
2. **Dönüş tipi YOKTUR** (`void` dahi yazılmaz!).
3. Bir sınıfta birden fazla constructor aşırı yüklenebilir (Overloading).
---
🏗️ 2. Default ve Parametreli Constructor 🛠️
Eğer sınıfınızda hiçbir constructor tanımlamazsanız, Java derleyicisi arka planda parametresiz ve içi boş bir **Default (Varsayılan) Constructor** otomatik olarak oluşturur. Ancak kendiniz bir constructor yazarsanız, default constructor iptal olur.
### Sınıf Tanımı (`Kitap.java`):
public class Kitap {
String ad;
String yazar;
int sayfaSayisi;
double fiyat;
// 1. Parametresiz Yapıcı Metot (No-Arg Constructor)
public Kitap() {
this.ad = "Bilinmeyen Kitap";
this.yazar = "Anonim";
this.sayfaSayisi = 0;
this.fiyat = 0.0;
System.out.println("Parametresiz constructor çalıştı.");
}
// 2. Parametreli Yapıcı Metot (Constructor Overloading)
public Kitap(String ad, String yazar, int sayfaSayisi, double fiyat) {
this.ad = ad;
this.yazar = yazar;
this.sayfaSayisi = sayfaSayisi;
this.fiyat = fiyat;
System.out.println("Parametreli constructor çalıştı: " + ad);
}
public void bilgileriYazdir() {
System.out.println("Kitap: " + ad + " | Yazar: " + yazar + " | Sayfa: " + sayfaSayisi + " | Fiyat: " + fiyat + " TL");
}
}
### Kullanımı (`Main.java`):
public class Main {
public static void main(String[] args) {
// Parametresiz constructor ile nesne oluşturma
Kitap k1 = new Kitap();
k1.bilgileriYazdir();
System.out.println();
// Parametreli constructor ile nesne oluşturma
Kitap k2 = new Kitap("Suç ve Ceza", "Dostoyevski", 687, 145.50);
k2.bilgileriYazdir();
}
}
---
🔗 3. `this()` İle Yapıcı Metot Zincirleme (Constructor Chaining) ⛓️
Bir constructor içinden aynı sınıftaki başka bir constructor'ı çağırmak için **`this(...)`** yapısı kullanılır.
⚠️ **Kritik Kural:** `this()` çağrısı, constructor gövdesindeki **ILK SATIRDA** yer almak ZORUNDADIR!
public class Oyuncu {
String kullaniciAdi;
int seviye;
int puan;
// Tek parametreli constructor
public Oyuncu(String kullaniciAdi) {
// Diğer 3 parametreli constructor'ı varsayılan değerlerle çağırır
this(kullaniciAdi, 1, 0);
}
// Tüm parametreleri alan ana constructor
public Oyuncu(String kullaniciAdi, int seviye, int puan) {
this.kullaniciAdi = kullaniciAdi;
this.seviye = seviye;
this.puan = puan;
}
public void profilGoster() {
System.out.println("Oyuncu: " + kullaniciAdi + " | Seviye: " + seviye + " | Puan: " + puan);
}
}
---
🧹 4. Garbage Collector (Çöp Toplayıcı) Mantığı 🧼
C++ gibi dillerde Heap bellekten tahsis edilen nesnelerin elle (`free` / `delete`) silinmesi gerekir. Aksi halde bellek sızıntıları (Memory Leak) oluşur.
Java'da ise bu işlem tamamen otomatiktir!
**Garbage Collector (GC):** JVM içinde arka planda çalışan ve Heap alanında **artık hiçbir referansı kalmayan (unreferenced)** yetim nesneleri tespit edip bellekten otomatik olarak temizleyen mekanizmadır.
public class Main {
public static void main(String[] args) {
Kitap k1 = new Kitap("1984", "George Orwell", 328, 120.0);
// k1 referansı artık başka bir nesneyi işaret ediyor!
// Eski "1984" nesnesi Heap'te referanssız kaldı.
k1 = new Kitap("Simyacı", "Paulo Coelho", 184, 95.0);
// Artık "1984" nesnesine erişilemez.
// Garbage Collector uygun bir zamanda onu bellekten siler.
}
}
---
📝 Bölüm Özeti ve Gelecek Bölüm 🔮
Bu bölümde Yapıcı Metotların çalışma felsefesini, Overloading ilkelerini, `this()` ile zincirleme constructor kullanımını ve Garbage Collector mekanizmasını öğrendik.
👉 **Bölüm 8'de Bizi Ne Bekliyor?**
• OOP'nin 4 Ana Temelinden İlki: **Encapsulation (Kapsülleme)** 🛡️
• Erişim Belirteçleri (`public`, `private`, `protected`, default)
• **Getter ve Setter** Metotları
• Salt Okun
ur (Read-Only) ve Salt Yazılır (Write-Only) Sınıflar
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