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:
staticaç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):
staticaç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) |