Sobes.tech
Middle

İç içe sınıfların hangi türleri vardır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Statik iç içe sınıflar ve iç sınıflar (statik olmayan iç içe sınıflar).

  • Statik iç içe sınıflar:

    • static anahtar kelimesi ile bildirilirler.
    • Yalnızca dış sınıfın statik üyelerine (alanlar ve metodlar) erişebilirler, özel üyeler dahil.
    • Dış sınıfın statik olmayan üyelerine doğrudan erişimleri yoktur.
    • Dış sınıf örneği olmadan örneklenebilirler.
    class Outer {
        private static int staticVar = 10;
        private int instanceVar = 20;
    
        static class StaticNested {
            void display() {
                System.out.println("Statik değişken: " + staticVar);
                // System.out.println("İş instance değişken: " + instanceVar); // Derleme hatası
            }
        }
    }
    
  • İç sınıflar (statik olmayan iç içe sınıflar):

    • static anahtar kelimesi olmadan bildirilirler.
    • Tüm üyelerine (statik ve statik olmayanlar) erişim hakkına sahiptirler, özel üyeler dahil.
    • Sadece son sabitler hariç statik üyeler (alanlar veya metodlar) içeremezler.
    • Oluşumları için dış sınıfın örneğine ihtiyaç duyarlar.
    class Outer {
        private static int staticVar = 10;
        private int instanceVar = 20;
    
        class Inner {
            void display() {
                System.out.println("Statik değişken: " + staticVar);
                System.out.println("İş instance değişken: " + instanceVar);
            }
        }
    }
    
  • Yerel sınıflar:

    • Metodlar, yapıcılar veya başlatma blokları içinde bildirilirler.
    • Tüm final ve effectively final yerel değişkenlere ve tanımlandıkları dış sınıfın üyelerine erişebilirler.
    • Görünürlükleri, bildirildikleri blokla sınırlıdır.
    class Outer {
        void myMethod() {
            final int localVar = 5; // Effectively final
    
            class LocalInner {
                void display() {
                    System.out.println("Yerel değişken: " + localVar);
                }
            }
    
            LocalInner local = new LocalInner();
            local.display();
        }
    }
    
  • Anonim sınıflar:

    • İsimsiz yerel sınıflar.
    • Aynı anda oluşturulup örneklendirilebilirler.
    • Sıkça arayüz uygulamaları veya sınıf genişletmeleri yapmak için kullanılırlar.
    interface MyInterface {
        void doSomething();
    }
    
    class Outer {
        void myMethod() {
            MyInterface anon = new MyInterface() {
                @Override
                public void doSomething() {
                    System.out.println("İsimsiz şekilde bir şeyler yapılıyor.");
                }
            };
            anon.doSomething();
        }
    }
    

Statik iç içe sınıflar ile iç sınıflar arasındaki temel farklar:

Özellik Statik iç içe sınıf İç sınıf
Anahtar kelime static Yok
Üyelere erişim Yalnızca dış sınıfın statik üyelerine Tüm dış sınıf üyelerine erişebilir
Örnek oluşturma Dış sınıf örneği olmadan Dış sınıf örneği gereklidir
Statik üyeler İçerebilir İçeremez (sadece sabitler hariç)