Sobes.tech
Junior

İç içe sınıflar nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

İç içe sınıflar (Nested Classes), başka bir sınıfın içinde tanımlanan sınıflardır. İki ana türe ayrılırlar:

  1. Statik İç İçe Sınıflar (Static Nested Classes): Dış sınıfın statik üyelerine benzerler. Dış sınıfın statik olmayan üyelerine doğrudan erişimleri yoktur. Dış sınıf örneği olmadan oluşturulurlar.

    Java'da örnek:

    class OuterClass {
        static int outerStaticField;
        int outerInstanceField;
    
        static class StaticNestedClass {
            void accessOuterStatic() {
                // OuterClass'ın statik üyesine erişim
                int value = OuterClass.outerStaticField;
            }
    
            // outerInstanceField'a doğrudan erişimi yok
            // void accessOuterInstance() {
            //     int value = outerInstanceField; // Derleme hatası
            // }
        }
    }
    
  2. İç Sınıflar (Inner Classes): Statik olmayan. Tüm dış sınıf üyelerine, statik ve olmayanlar dahil, hatta özel üyelerine erişebilirler. İç sınıf örneği, dış sınıf örneğine bağlıdır. Dış sınıf örneği kullanılarak oluşturulur.

    Java örneği:

    class OuterClass {
        static int outerStaticField;
        int outerInstanceField;
    
        class InnerClass {
             void accessOuterMembers() {
                 // OuterClass'ın statik ve olmayan üyelerine erişim
                 int staticValue = OuterClass.outerStaticField;
                 int instanceValue = outerInstanceField;
             }
        }
    }
    

Ayrıca, belirli iç sınıf türleri de vardır:

  • Yerel Sınıflar (Local Classes): Bir blok içinde tanımlanır (örneğin, metod, yapıcı veya başlatma bloğu). Sadece bu blok içinde erişilebilir.
  • Anonim Sınıflar (Anonymous Classes): İsmi yoktur. Bir arayüzün veya sınıfın tek seferlik uygulamasını oluşturmak için kullanılırlar. Aynı anda tanımlanır ve örneklendirilirler.

İç içe sınıfların avantajları:

  • Mantıksal Gruplama: Mantıksal olarak ilişkili sınıfları gruplayarak kod okunabilirliğini artırır.
  • Kapsülleme: Özel dış sınıf üyelerine erişebilir, böylece daha güçlü bir kapsülleme sağlar.
  • Daha Basit Kod: Sadece başka bir sınıf tarafından kullanılan sınıflar için kod yazmayı kolaylaştırır.

QA Otomasyonunda Uygulama:

  • Page Object Model: İç içe veya statik iç içe sınıflar, sayfa öğelerini (örneğin, bölümler, modal pencereler) ana Page Object sınıfı içinde düzenlemek için kullanılabilir.
  • Olay İşleyicileri / Callbacks: Anonim veya yerel sınıflar, UI öğeleri veya dinleyicilerle çalışırken callback'ler veya olay işleyicileri kullanmak için kullanılabilir.
  • Yapılandırma Sınıfları: Statik iç içe sınıflar, dış sınıfa özgü sabitler veya yapılandırma parametreleri içerebilir.