Sobes.tech
Middle

Proqramlaşdırma dilində daxili siniflərin növləri hansılardır?

sobes.tech Süni İntellekt

AI-dan cavab

Java-da daxil olan siniflər:

  1. Statik daxili siniflər (Static Nested Classes): Adətən sinifin statik üzvləri kimi davranırlar. Xarici sinifin qeyri-statik üzvlərinə daxil olmurlar. Xarici sinif nümunəsi olmadan yaradılırlar.

    public class Outer {
        private static String staticMsg = "Statik mesaj";
        private String instanceMsg = "Nümunə mesajı";
    
        static class StaticNested {
            void displayStatic() {
                // Xarici sinifin statik üzvlərinə giriş
                System.out.println(staticMsg);
                // Xarici sinifin qeyri-statik üzvlərinə giriş yoxdur
                // System.out.println(instanceMsg); // Tərtib səhvi
            }
        }
    }
    
  2. Daxili siniflər (Inner Classes): Xarici sinif nümunəsinə bağlıdırlar. Bütün (statik və qeyri-statik) üzvlərə, o cümlədən xüsusi üzvlərə tam girişə malikdirlər. private, protected, package-private və ya public kimi elan edilə bilərlər.

    public class Outer {
        private static String staticMsg = "Statik mesaj";
        private String instanceMsg = "Nümunə mesajı";
    
        class Inner {
            void display() {
                // Statik və qeyri-statik üzvlərə giriş
                System.out.println(staticMsg);
                System.out.println(instanceMsg);
            }
        }
    }
    
  3. Yerli siniflər (Local Classes): Metod, konstruktor və ya statik inisialisator blokunda elan edilir. Yalnız həmin blok daxilində mövcuddur. final və ya effektiv final olan yerli dəyişənlər və parametrələrə, eləcə də xarici sinifin bütün üzvlərinə müraciət edə bilərlər.

    public class Outer {
        private String instanceMsg = "Nümunə mesajı";
    
        void methodWithLocalClass() {
            final String localVar = "Yerli dəyişən"; // və ya effektiv final
    
            class Local {
                void display() {
                    System.out.println(instanceMsg);
                    System.out.println(localVar);
                }
            }
    
            Local localObj = new Local();
            localObj.display();
        }
    }
    
  4. Anonim siniflər (Anonymous Classes): Adı olmayan yerli siniflərdir. İnterfeys və ya sinfi genişləndirən sinif elan və nümunə yaratmaq üçün istifadə olunur. Kiçik, tək istifadə olunan obyektlər yaratmaq üçün əlverişlidir.

    public class Outer {
        void methodWithAnonymousClass() {
            // Runnable interfeysini həyata keçirən anonim sinif
            Runnable myRunnable = new Runnable() {
                @Override
                public void run() {
                    System.out.println("Anonim sinifdən işləyir");
                }
            };
            new Thread(myRunnable).start();
    
            // Thread sinifini genişləndirən anonim sinif
            Thread myThread = new Thread() {
                @Override
                public void run() {
                    System.out.println("Thread genişləndirən anonim sinifdən işləyir");
                }
            };
            myThread.start();
        }
    }
    

İnkişaf növlərinin müqayisəsi:

Sinif növü Elan yeri Xarici sinifin üzvlərinə giriş Yaradılması üçün xarici sinif nümunəsi lazımdır mı Giriş modifikatorları
Statik daxili sinif Sinif daxilində, static açar sözü ilə. Yalnız statiklərə. Xeyr Hamısı
Daxili sinif (Inner) Sinif daxilində (statik olmayan). Bütün (statik və qeyri-statik) üzvlərə. Bəli Hamısı
Yerli sinif Blok daxilində (metodlar, konstruktorlar, inisialisatorlar). Xarici sinifin bütün üzvlərinə + final və ya effektiv final yerli dəyişənlər və parametrlərə. Bəli Xeyr (final və ya abstract avtomatik)
Anonim sinif Blok daxilində (ifadə). Xarici sinifin bütün üzvlərinə + final və ya effektiv final yerli dəyişənlər və parametrlərə. Bəli Xeyr