Static Anahtar Kelimesi: Static Değişken ve Metotlar Ne Zaman Kullanılır?

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16
Static: Bellekte Tek, Sınıfa Ait



1. Static Değişkenler (Class Variables)​


Normal bir değişken her yeni nesne oluşturulduğunda (new) bellekte yeniden yaratılır. Ancak static bir değişken, sınıf belleğe yüklendiği anda bir kez oluşturulur.

Paylaşılan Veri: Tüm nesneler aynı static değişkeni görür. Bir nesne onu değiştirirse, diğerleri de güncellenmiş halini görür.

Bellek Dostu: Nesne sayısından bağımsız olarak bellekte sadece bir yer kaplar.

Java:
class Oyuncu {
String isim; // Her oyuncunun ismi farklıdır (Instance variable)
static int oyuncuSayisi = 0; // Toplam sayı tektir ve paylaşılır (Static variable)

Oyuncu(String isim) {
    this.isim = isim;
    oyuncuSayisi++; // Her yeni nesne oluşturulduğunda ortak sayacı artırır
}

}

2. Static Metotlar​


static metotlar, bir nesne oluşturmaya gerek kalmadan SınıfAdı.metotAdı() şeklinde çağrılabilirler.

Kısıtlama: Static metotlar, nesneye özgü (non-static) değişkenlere veya metotlara doğrudan erişemezler. Çünkü ortada henüz bir nesne olmayabilir.

Erişim: Sadece diğer static üyeleri kullanabilirler.

Java:
public class Matematik {
public static int topla(int a, int b) {
return a + b;
}
}

// Kullanım: nesne oluşturmaya gerek yok!
int sonuc = Matematik.topla(5, 10);

3. Ne Zaman Static Kullanmalıyız?​


A. Yardımcı (Utility) Sınıflar İçin​

Eğer bir metot sadece girdi alıp çıktı üretiyorsa ve nesnenin iç durumuna (state) ihtiyaç duymuyorsa static olmalıdır. (Örn: Math.sqrt(), Arrays.sort()).

B. Sabit Değerler İçin​

Uygulama genelinde değişmeyecek değerleri static final (sabit) olarak tanımlarız.
public static final double PI = 3.14159;

C. Sayaçlar ve Global Ayarlar İçin​

Kaç nesne üretildiğini takip etmek veya tüm nesnelerin uyması gereken tek bir ayarı (Örn: database_url) saklamak için kullanılır.

4. Static vs Instance (Nesne) Karşılaştırması​


ÖzellikStatic (Sınıf)Instance (Nesne)
Erişim YoluSınıf ismiyle (Matematik.topla)Nesne ismiyle (m.topla)
Bellek AlanıMethod Area (Tek seferlik)Heap (Her nesne için ayrı)
this KullanımıKullanılamaz (this nesneyi temsil eder)Kullanılabilir
Yaşam SüresiProgram başlayınca doğar, bitince ölür.Nesne oluşunca doğar, GC silince ölür.



Sonuç

static anahtar kelimesi, belleği verimli kullanmamızı sağlar ancak aşırı kullanımı "Nesne Yönelimli" mantıktan uzaklaşıp "Prosedürel" koda kaymamıza neden olabilir. Bir şeyi static yapmadan önce kendinize şu soruyu sorun: "Bu özellik nesneden nesneye değişiyor mu?". Cevap hayır ise, static doğru tercihtir.
 
Geri
Üst