java logo

Merhaba arkadaşlar, şimdi birçok programcının, ya da yazılım öğrencilerinin gördüğü fakat bir türlü kavrayamadığı bir kavram bulunuyor. Bu da static kavramı.

Bir değişkeni veya yöntemi static olarak bildirdiğinizde, belirli bir örneğe değil de sınıfa aittir. Bunun anlamı, sınıfın birden fazla nesnesini oluştursanız veya hiç yaratmadıysanız bile, static (statik) bir üyenin yalnızca bir örneğinin var olduğu anlamına gelir. Tüm nesneler tarafından paylaşılacaktır.

public class Sayac{
  public static int SAYI=0;
  Sayac() {
    SAYI++;
  }
}

Sayi değişkeni, o sınıfın tüm nesneleri tarafından paylaşılacak. Sayac sınıfımızı main sınıfımızda çağırabilir ve static değişkeni kullanabiliriz.

Örnek:

//
public class MyClass {
  public static void main(String[ ] args) {
    Sayac s1 = new Sayac();
    Sayac s2 = new Sayac();
    System.out.println(Sayac.SAYI);
  }
}
//Çıktımız "2"

Normalde bir sınıftan nesne çağırdığımızda her örneklediğimizde farklı çalışırken, static olarak tanımladığımızda önceki oluşan örnek üzerinden devam etmektedir.

Static değişkene, o sınıfın s1.SAYI gibi herhangi bir nesnesini kullanarak da erişebilirsiniz.

Not: Static bir değişkeni adlandırırken zorunlu olmasa da büyük harf kullanmak yaygın bir uygulamadır.

Static kavramı metotlar/yöntemler için de geçerlidir.

public class Araba{
  public static void korna() {
    System.out.println("biiip");
  }
}

Şimdi de herhangi bir nesne oluşturmadan korna’yı çağırabiliriz.

public class MyClass {
  public static void main(String[ ] args) {
    Araba.korna();
  }
}

Static yöntemlere en güzel örnek bir önceki yazım olan Java matematik sınıfı ile işlemlerdir. Orada da herhangi bir örnekleme yapmadan direkt sınıf içerisindeki metota erişebiliyoruz.

Not: Ana fonksiyon(main metot) her zaman static olmalıdır.

Umarım faydalı olmuştur anlaşılması en karışık şeylerden biridir static kavramı. Özellikle yeni başlayanlar için karmaşık görünebilir kod tekrarları yaparak kendinizi geliştirmeye çalışın.

Bunlara Göz Atmak İsteyebilirsiniz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir