Java: OOP — Statik Değişkenler (Static Variables)

Java Programming
3 min readOct 14, 2018

--

Merhaba Arkadaşlar,

Bu yazımızda Statik Değişken nedir onu öğeneceğiz. Öncelikle şunu da bilmeliyiz Statik Değişkenlere, Sınıf Değişkenleri de denir. Nedenini yazının devamında anlayacaksınız.

Statik Değişkenler oluşturulduğunda ait olduğu sınıf için hafızada bir tek yer açılır. Oluşturulan her bir nesne için tekrardan bellekte yer kaplamazlar.

Statik değişkenler nesneye bağlı olmadan oluşturuldukları için, onlara nesne yaratılmaksızın erişilir. Yani statik değişkenler hiçbir nesne oluşturulmadan veya var olan tüm nesneler silindikten de sonra da erişilebilirler. Örnek ile açıklarsak:

Gördüğünüz üzere staticVariables adlı sınıfımızı oluşturduk. Değişkenleri ve metodumuzu statik olarak tanımladık. Şimdi nesne oluşturmadan nasıl erişim sağlanıyor bakalım.

Nesne oluşturmadan sınıf değişkenlerine veya metotlara erişim sağlamak için

className.

yazıp ardından erişmek istediğiniz değişken veya metodu yazmalısınız.

Peki statik olmaz ise erişim de olmaz. Gelin buna da bakalım.

Statik olmayan bir metot yazdık. Şimdi testStaticVariables sınfıımızdan nesne olmadan erişim sağlamayı deneyelim.

Gördüğünüz üzere erişim sağlanmıyor. Kısacası eğer oluşturduğunuz değişken veya metot statik ise nesnesiz erişim sağlanabilir. Fakat statik değil ise erişilemez.

Yazıya ilk başladığımız zaman statik değişkenler oluşturulduğunda bellekte bir yer ayrıldığını ve o değişken kullanılsa da kullanılmasa da program sonlanana kadar o bellekte olduğunu söylemiştik. Yani her nesne oluşturduğumuzda sınıfın içindeki değişkenler o nesneye özel, bellekte bir yerde tutulurlar. Fakat statik olanlar zaten bir yerde direkt olarak bellekte tutulduğundan her nesne için tekrardan yer ayrılmaz. Şimdi buna bakalım.

Örnekte numberOfCircle değişkenini statik olarak belirledik.

Burada da gördüğümüz üzere statik olan numberOfCircle değişkenine nesne olmadan eriştik. Ardından oluşturduğumuz her nesnede numberOfCircle değişkenini staticExample sınıfında bir arttırdık. Her nesne oluşturduğumuz zaman numberOfCircle sıfırlanıp bir artmadı. Çünkü statik bir değişken ve nesnelerden bağımsız olarak sahip olduğu veriyi kendine özel olan bellekte tutmakta.

Aynı zamanda bu örnekte neden sınıf değişkeni dendiği de anlaşılmış olmalı. Bir sınıfta kullanılacak nesnelerden bağımsız olacak, bir referans olmadan kullanılacak bir değişken varsa bu statik olmalı. Bundan dolayı da bu değişken nesneye değil de tamamen sınıfa ait bir değişkendir denilebilir.

Örneğin main sınıfı bir static sınıftır. Bundan dolayı herhangi bir referans gösterilmeden program çalıştırıldığında çalışır.

Peki bir değişkenin veya metodun statik olup olmayacağını nasıl anlarız.

Bunu bir örnek ile anlatalım. Örneğin 10 adet çemberimiz olsun bunların yarıçap değeri statik olabilir mi?

Tabi ki hayır. Bunun nedeni çemberin yarıçap değeri her çemberde değişkenlik gösterebilir. Alanıda yarıçap özelliğine göre değişebileceğinden alan metodu oluşturursak bu da statik olmaz.

Ya da bir sınıf sınıfı oluşturalım. Ve her öğrenci için bir yaş, cinsiyet, boy ve kilo gibi değişkenler oluşturalım. Her öğrenci için nesne oluşturup değerleri tanımlayalım. Bir de sınıf mevcudu diye bir değişken oluşturalım. Bu değişkenlerden hangileri statikdir?

Öncelikle kilo, cinsiyet, yaş, boy gibi özellikler öğrenciden öğrenciye değişebilir bundan dolayı bu değişkenler statik olamaz.

Fakat sınıf mevcudu sınıfın toplamına yani geneline ait bir özelliktir. Herhangi bir nesneye bağlı bir değişken değildir.

Statik değişkenler ile ilgili anlatacaklarımız buraya kadar. Bir sonraki yazıda görüşmek dileğiyle…

--

--