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:
-
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ı // } } } -
İç 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.