9 Aralık 2020

Static Nested Class

ile gökhan

Bir önceki yazıda Inner classlar incelenmişti. Sırada ikinci nested class türümüzü olan Static Nested Class konusunu inceleyeceğim. Static Nested Class, üst sınıfın üye düzeyinde tanımlanan statik bir türdür. Inner classların aksine, static nested class, en dıştaki sarmalayan sınıfın bir örneği olmadan başlatılabilirler. Inner classtan bir diğer farkı en dıştaki sarmalayan sınıfın instance değişkenlerine veya yöntemlerine erişememesidir, bu yapılabilir ancak en dıştaki sınıf değişkenine açık bir şekilde referans verilmesi gerekmektedir. Diğer bir deyişle aşağıdakiler dışında üst düzey bir sınıfa benzer:

  • Çevreleyen sınıf, static iç sınıfın alanlarına ve yöntemlerine başvurabilir.
  • private hale getirilebilirler ve kapsüllemek için erişim değiştiricileri kullanılabilir.
  • Çevreleyen sınıf, iç sınıfın alanlarını veya yöntemlerini kullanmak isterse, iç sınıftan bir referansa başvurur.

Aşağıdaki örnekte görüldüğü gibi üst sınıf, iç sınıfın değişkenlerine doğrudan ulaşabilmektedir. Üst sınıftan bir örnek oluşturmaya gerek yoktur.

public class X {
    static class Y {
        private int price = 6;
    }
    public static void main(String[] args) {
        Y y = new Y();
        System.out.println(y.price);
    }
}