Sobes.tech
Middle

Hansı daxili sinif növləri mövcuddur?

sobes.tech Süni İntellekt

AI-dan cavab

Statik daxili siniflər və daxili siniflər (statik olmayan daxili siniflər).

  • Statik daxili siniflər:

    • static açar söz ilə elan edilir.
    • Yalnız xarici sinifin statik üzvlərinə (sahələr və metodlar) daxil ola bilər, o cümlədən xüsusi (private).
    • Birbaşa xarici sinifin qeyri-statik üzvlərinə daxil ola bilməz.
    • Xarici sinif nümunəsi olmadan yaradılabilir.
    class Outer {
        private static int staticVar = 10;
        private int instanceVar = 20;
    
        static class StaticNested {
            void display() {
                System.out.println("Statik dəyişən: " + staticVar);
                // System.out.println("Nümunə dəyişən: " + instanceVar); // Kompilyasiya xətası
            }
        }
    }
    
  • Daxili siniflər (statik olmayan daxili siniflər):

    • static açar sözü olmadan elan edilir.
    • Bütün üzvlərə (statik və qeyri-statik) daxil ola bilər, o cümlədən xüsusi (private).
    • Statik üzvlər (sahələr və metodlar) daxil edə bilməz, yalnız son dərəcə sabitlər (final constants).
    • Yaradılması üçün xarici sinif nümunəsi tələb olunur.
    class Outer {
        private static int staticVar = 10;
        private int instanceVar = 20;
    
        class Inner {
            void display() {
                System.out.println("Statik dəyişən: " + staticVar);
                System.out.println("Nümunə dəyişən: " + instanceVar);
            }
        }
    }
    
  • Yerli siniflər:

    • Metodlar, konstruktörlər və ya inşaat blokları daxilində elan edilir.
    • Yalnız son dərəcə final və ya effektiv final olan yerli dəyişənlərə, həmçinin onları təyin edən xarici sinifin üzvlərinə daxil ola bilər.
    • Görünüş sahəsi elan olunduğu blokla məhdudlaşır.
    class Outer {
        void myMethod() {
            final int localVar = 5; // Effektiv final
    
            class LocalInner {
                void display() {
                    System.out.println("Yerli dəyişən: " + localVar);
                }
            }
    
            LocalInner local = new LocalInner();
            local.display();
        }
    }
    
  • Anonim siniflər:

    • Adı olmayan yerli siniflər.
    • Eyni zamanda yaradılır və nümunə alınır.
    • Əsasən interfeyslərin və ya siniflərin genişləndirilməsi üçün istifadə olunur.
    interface MyInterface {
        void doSomething();
    }
    
    class Outer {
        void myMethod() {
            MyInterface anon = new MyInterface() {
                @Override
                public void doSomething() {
                    System.out.println("Anonim olaraq bir şey edir.");
                }
            };
            anon.doSomething();
        }
    }
    

Statik daxili siniflər və daxili siniflər arasındakı əsas fərqlər:

Xüsusiyyət Statik daxili sinif Daxili sinif
Açar söz static Yox
Üzvlərə giriş Yalnız xarici sinifin statik üzvlərinə Bütün xarici sinif üzvlərinə
Nümunə yaratma Xarici sinif nümunəsi olmadan Xarici sinif nümunəsi tələb olunur
Statik üzvlər Ola bilər Ola bilməz (kənar sabitlər istisna olmaqla)