Middle
Java-da iç içə (nested) və daxili (inner) siniflər arasındakı fərqlər nədir?
sobes.tech Süni İntellekt
AI-dan cavab
-
Daxili sinflər (Nested classes): Xarici sinfinin statik üzvləri. Xarici sinfinin statik olmayan üzvlərinə (sahələr və metodlar) birbaşa daxil olmurlar, yalnız xarici sinfin nümunəsi vasitəsilə.
staticaçar sözü ilə elan edilir. -
Daxili sinflər (Inner classes): Xarici sinfin statik olmayan üzvləri. Xarici sinfin bütün üzvlərinə (statik və statik olmayan) tam giriş imkanı verir, hətta xüsusi üzvlərə də. Daxili sinfin nümunəsini yaratmaq üçün xarici sinfin nümunəsi lazımdır.
staticaçar sözünü istifadə etmirlər.
Nümunə:
// Xarici sinif
class Outer {
private int outerField = 10;
private static int staticOuterField = 20;
// Statik daxili sinif
static class StaticNestedClass {
void display() {
// Yalnız xarici sinfin statik üzvlərinə giriş
System.out.println("Statik daxili: " + staticOuterField);
// outerField-ə birbaşa giriş yoxdur
// System.out.println(outerField); // Kompilyasiya xətası
}
}
// Statik olmayan daxili sinif
class InnerClass {
void display() {
// Bütün xarici sinfin üzvlərinə giriş
System.out.println("Daxili: " + outerField);
System.out.println("Daxili (statik): " + staticOuterField);
}
}
}
// İstifadə
public class Main {
public static void main(String[] args) {
// Statik daxili sinif nümunəsi yaratmaq
Outer.StaticNestedClass staticNested = new Outer.StaticNestedClass();
staticNested.display();
// Daxili sinif nümunəsi yaratmaq üçün xarici sinfin nümunəsi lazımdır
Outer outer = new Outer();
Outer.InnerClass inner = outer.new InnerClass();
inner.display();
}
}
| Xüsusiyyət | Daxili sinif (Nested Class) | Daxili sinif (Inner Class) |
|---|---|---|
| Açar söz | static |
Yox |
| Xarici sinfin üzvlərinə giriş | Yalnız statiklər | Hamısı |
| Xarici sinfin nümunəsi olmadan daxili sinfin nümunəsi yaradıla bilərmi? | Yox | Bəli |
| Xarici sinfin nümunəsi ilə əlaqə | Yox | Bəli |