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:
-
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 } } } -
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-privatevə yapublickimi 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); } } } -
Yerli siniflər (Local Classes): Metod, konstruktor və ya statik inisialisator blokunda elan edilir. Yalnız həmin blok daxilində mövcuddur.
finalvə ya effektivfinalolan 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(); } } -
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 |