Javada İç İçe Sınıflar (Nested Classes)

Java’da iç içe sınıflar (nested classes) nasıl tanımlanır ve kullanılır? Static ve non-static nested class farklarını örneklerle öğrenin.

Ali YILMAZ
Ali YILMAZ

Yönetici

45

Java’da İç İçe Sınıflar (Nested Classes)

Java’da bir sınıf içinde başka bir sınıf tanımlamak mümkündür. Bu yapıya iç içe sınıflar (nested classes) adı verilir. Nested class yapısı, sınıflar arasında mantıksal bir bağ kurmak, kodu organize etmek ve okunabilirliği artırmak amacıyla kullanılır.

1. Nested Class Türleri

Java'da dört farklı nested class türü bulunur:

  • Static Nested Class
  • Non-static Inner Class
  • Local Inner Class
  • Anonymous Inner Class

2. Static Nested Class

Bu sınıflar, dış sınıfın static üyesi gibi davranır. Dış sınıfın sadece static öğelerine doğrudan erişebilirler.

class DisSinif {
    static class IcSinif {
        void yazdir() {
            System.out.println("Static Nested Class çalıştı");
        }
    }
}

public class Main {
    public static void main(String[] args) {
        DisSinif.IcSinif nesne = new DisSinif.IcSinif();
        nesne.yazdir();
    }
}

3. Non-static Inner Class

Bu sınıf, dış sınıfın tüm öğelerine (static ve non-static) erişebilir. Nesnesi dış sınıf nesnesi üzerinden oluşturulur.

class DisSinif {
    int sayi = 10;

    class IcSinif {
        void yazdir() {
            System.out.println("Non-static Inner Class: " + sayi);
        }
    }
}

public class Main {
    public static void main(String[] args) {
        DisSinif dis = new DisSinif();
        DisSinif.IcSinif ic = dis.new IcSinif();
        ic.yazdir();
    }
}

4. Local Inner Class

Bir metodun içinde tanımlanan sınıftır. Sadece o metodun içinde erişilebilir.

public class Ornek {
    void goster() {
        class YerelSinif {
            void mesaj() {
                System.out.println("Local Inner Class çalıştı");
            }
        }

        YerelSinif y = new YerelSinif();
        y.mesaj();
    }

    public static void main(String[] args) {
        Ornek o = new Ornek();
        o.goster();
    }
}

5. Anonymous Inner Class

Bu sınıf, genellikle bir interface ya da abstract class’ın metotlarını hemen kullanmak için oluşturulur. Adı olmayan geçici bir sınıftır.

abstract class Selamla {
    abstract void mesaj();
}

public class Main {
    public static void main(String[] args) {
        Selamla s = new Selamla() {
            void mesaj() {
                System.out.println("Anonim sınıf çalıştı");
            }
        };
        s.mesaj();
    }
}

Java nested class yapısı, sınıflar arası ilişkiyi güçlendirir ve kodun daha organize olmasını sağlar. Static veya non-static yapılar, projenin ihtiyacına göre tercih edilerek kod tekrarını azaltır ve okunabilirliği artırır. Özellikle GUI programlamada veya kısa ömürlü sınıflarda inner class yapıları sıklıkla tercih edilir.




Paylaş

Etiketler


Yorum Yok

    Bu Yazıya Hiç Yorum Yapılmamış. İlk Yorum Yapan Sen Ol !

Yorum Yap


Instagram