Sınıfların Static Veri Elemanları

Sınıfın static veri elemanlarının toplamda tek bir kopyası vardır. new operatörü ile tahsisat yapıldığında static elemanlar nesne içinde yer kaplayamazlar. Sınıfın static veri elemanlarına, sınıf ismi ve nokta operatörüyle erişilir. Çünkü onlardan toplamda tek bir kopya vardır. Sınıfın static veri elemanları, o sınıf türünden hiç nesne yaratmasak bile zaten yaratılmış olarak bulunurlar.

Bir sınıfta hiçbir metod bulunmayabilir. Benzer biçimde sınıfta hiçbir veri elemanıda bulunmayabilir. Sınıfta hiçbir veri elemanı yoksa bile new operatörü ile nesne yaratıldığında yinede en az 1 byte’lik sözde bir alan ayrılır. Bir sınıf boşta olabilir. Bir sınıfın static veri elemanları sınıfın type ensnesi içerisinde bulundurulur. Dolayısıyla bunlarda dolaylı olarak heap’tedir.

Sınıfın Static ve Static Olmayan Metodları
Bugüne kadar biz sınıfın bütün veri elemanlarını static yaptık. Sınıfın static olmayan veri elemanları, sınıfın static olmayan metodları tarafından doğrudan kullanılabilir. Fakat static metodları tarafından kullanılamaz.
Sınıfın static olmayan metodları bir referansla ve nokta operatörü kullanılarak çağrılır.

Static olmayan metod içerisinde kullandığımız sınıfın static olmayan veri elemanları, o metod hangi referansla çağrılmışsa o referansın gösterdiği yerdeki nesnenin veri elemanlarıdır.

Sınıfın static metodları neden sınıf ismiyle çağrılır? Çünkü onlar zaten sınıfın static olmayan veri elemanlarını kullanmamaktadır.
Sınıfın static olmayan bir metodu doğrudan sınıfın başka bir static olmayan metodunu çağırabilir. Bu durumda çağrılan metod, çağıran metodun kullandığı nesnenin veri elemanlarını kullanır.
Sınıfın static bir metodu static olmayan bir metodunu doğrudan çağıramaz. Sınıfın static metodları, sınıfın static veri elemanlarını doğrudan kullanabilir. Benzer biçimde sınıfın static bir metodu, başka bir static metodu doğrudan çağırabilir. Nasıl olsa static veri elemanlarına referanssız erişebildiğine göre bunlara static olmayan metodlarda doğrudan erişebilir. Benzer biçimde static olmayan metodlar sınıfın static metodlarınıda doğrudan çağırabilir.
Sınıfın elemanı dendiğinde bu terim veri elemanınıda, metodu da kapsamalıdır. Static elemanlar, static veri elemanları ve static metodlardır. Static olmayan elemanlar, static olmayan veri elemanları ve static olmayan metodlardır. O halde;
1. Sınıfın static metodları, sınıfın yalnızca static elemanlarını doğrudan kullanabilir. Static olmayan elemanlarını kullanamaz.
2. Sınıfın static olmayan metodları, hem sınıfın static olmayan elemanlarını hem de static elemanlarını doğrudan kullanabilir.

Metodları Ne Zaman Static, Ne Zaman Static Olmayan Yapmalıyız?
Sınıfın Foo isimli bir metodunun sınıfın hiçbir static olmayan elemanı kullanmadığını düşünelim. Burada Foo teknik olark static’te yapılabilir, static olmayanda yapılabilir. Fakat biz bu Foo metodunu static olmayan yaparsak, boşuna onu bir referansa mahkum ederiz. O halde doğru teknik, sınıfın static olmayan elemanlarını kullanmayan metodların static yapılmasıdır.

Static olmayan metodlar neden referansla çağrılmaktadır? Çünkü o metodun kullandığı veri elemanlarının, hangi nesnenin veri elemanları olduğunun belirtilmesi gerekir.

Leave a Reply

Site Footer