Java

Java’da static ve final Anahtar Sözcükleri

Bir önceki yazımızda Java’da Erişim Kontrolleri (Encapsulation) konusunda sarmalama işleminin nasıl yapıldığını ve ne için kullanıldığını görmüştük. Şimdi ise Java’da static ve final anahtar sözcüklerinin ne anlama geldiklerini inceleyeceğiz.

Java programları yazarken kimi durumlarda sınıf içerisindeki diğer nesnelerden bağımsız olarak var olabilecek sınıf üyeleri tanımlamamız gerekebilmektedir. Belirli bir referans olmadan, kendi başına kullanılabilecek bir sınıf üyesini static anahtar sözcüğünü başına ekleyerek oluşturmak mümkündür. Örneğin her Java programının çalışması için gerekli olan main() sınıfı static anahtar sözcüğüne sahiptir ve bu sayede herhangi bir nesne oluşturulmadan evvel programın çalışmasının ilk adımında main() metodunu çağırabiliriz.

Normalde bir sınıftan nesneler üretilirken her ürettiğimiz nesne için yeni bir kopya oluştururuz. Fakat static anahtar sözcüğüne sahip bir değişkenin kopyaları üretilmez. Sınıf içerisinde bulunan tüm örnekler bu static değişkeni ortak bir şekilde paylaşırlar. static anahtar sözcüğünü daha iyi kavramak için bir örnekle inceleyelim:

Örneğin elimizde sinif.java ve ogrenci.java olmak üzere iki adet sınıf yapımız olsun. ogrenci.java sınıfımız içerisinde ad, soyad ve mevcut olmak üzere üç adet değişken ve bir adet de yapılandırıcı metot barındırsın. sinif.java sınıfıyla da ogrenci.java sınıfından türetilen nesnelere ad ve soyad bilgilerini gönderelim. Kod yapımız şu şekilde olacaktır:

// Created by MuhammedTutar | 2016

public class ogrenci {

	private String ad;
	private String soyad;
	private static int mevcut = 0;
	
	public ogrenci (String a, String s){
		
		ad = a;
		soyad = s;
		mevcut++;
		System.out.println(ad+" "+soyad+" eklendi. Sınıf mevcudu: "+mevcut);
	}
}
// Created by MuhammedTutar | 2016

public class sinif {

	public static void main(String[] args) {
		
		ogrenci ogr1 = new ogrenci("Muhammed", "Tutar");
		ogrenci ogr2 = new ogrenci("Fatih", "Çal");
		ogrenci ogr3 = new ogrenci("Gökhan", "Ünal");
	}

}

Programımızı çalıştırdığımızda konsol ekranı şu şekilde olacaktır:

java-static

sinif.java içerisinde oluşturduğumuz ogrenci.java sınıfına ait 3 nesne var ve bu nesnelerin yapılandırıcı metotlarına ad ve soyad değişkenlerini gönderiyoruz. Konsol ekranında görüldüğü üzere her öğrenci nesnesi için yeni bir örnek oluşturuluyor. Fakat sınıf mevcudumuz static olduğu için tüm öğrenci nesneleri tek bir mevcut değişkenini kullanıyor. Bu sayede her yeni öğrenci nesnesi oluşuğunda sınıf mevcudu kaldığı yerden artmaya devam ediyor. Eğer mevcut değişkeni static olmasaydı her nesne oluşturduğumuzda yeni bir mevcut değişkeni oluşacaktı ve konsol ekranında sınıf mevcudu hep 1 olarak gösterilecekti.

final Anahtar Sözcüğü

final değişkenleri büyük harflerle tanımlamak yaygın bir programlama alışkanlığıdır.

final anahtar sözcüğü ise değişkenler ve metotlar için kullanılabilir. Fakat bu iki kullanım birbirinden farklıdır. Burada bahsedeceğimiz kullanım sadece değişkenler için olacaktır.

Bir değişkeni final olarak tanımlamak demek, bu değişkene atanacak bir ilk değerin program boyunca korunacağı anlamına gelir. Örneğin int x değişkenini final olarak tanımlarsak ve bu değişkene 10 değerini atarsak program çalıştığı müddetçe x değişkeni hep 10 değerine sahip olacaktır. Hiçbir şekilde yeni bir değer atamak veya mevcut değeri değişikliğe uğratmak mümkün değildir. Sadece bir defaya mahsus olmak üzere ilk değer ataması yapıldığı anda final olan değişken durumunu korur.

Java’da static ve final anahtar sözcüklerinin kullanımı bu şekildedir.

2 Yorum

bugrahan stdio için bir yanıt yazın X