Junior
Həll edilən sinflər nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Daxil olan siniflər (nested classes) — bu, başqa bir sinif daxilində elan olunan siniflərdir. Onlar statik (static nested classes) və statik olmayan (inner classes) ola bilər.
Statik daxil olan siniflər:
staticmodifikatoru ilə elan olunurlar.- Xarici sinifin statik olmayan üzvlərinə birbaşa daxil olmurlar (yalnız xarici sinif nümunəsi vasitəsilə).
- Həm statik, həm də statik olmayan üzvləri içərə bilər.
- Xarici sinif nümunəsi olmadan yaradılırlar.
public class Outer {
private static int staticOuterVar = 10;
private int instanceOuterVar = 20;
public static class StaticNested {
// staticOuterVar-ə giriş var
public void printStaticValue() {
System.out.println(staticOuterVar);
}
// instanceOuterVar-ə birbaşa giriş yoxdur
// public void printInstanceValue() {
// System.out.println(instanceOuterVar); // Yığım xətası
// }
}
}
Statik daxil olan sinifdən istifadə:
// Statik daxil olan sinif nümunəsinin yaradılması nümunəsi
Outer.StaticNested nestedObject = new Outer.StaticNested();
nestedObject.printStaticValue(); // 10 çıxaracaq
Statik olmayan daxil olan siniflər (Inner Classes):
staticmodifikatoru ilə elan olunmur.- Xarici sinifin bütün üzvlərinə, o cümlədən xüsusi üzvlərə də tam giriş imkanı var.
- Statik üzvlər (sabitlər istisna olmaqla) daxil edə bilməz.
- Yaradılması üçün xarici sinif nümunəsi lazımdır.
public class Outer {
private static int staticOuterVar = 10;
private int instanceOuterVar = 20;
public class Inner {
// staticOuterVar və instanceOuterVar-ə giriş var
public void printValues() {
System.out.println(staticOuterVar); // Mövcuddur
System.out.println(instanceOuterVar); // Mövcuddur
}
}
}
Statik olmayan daxil olan sinifdən istifadə:
// Statik olmayan daxil olan sinif nümunəsinin yaradılması nümunəsi
Outer outerObject = new Outer();
Outer.Inner innerObject = outerObject.new Inner();
innerObject.printValues(); // 10 və 20 çıxaracaq
Daxil olan siniflərin istifadəsinin üstünlükləri:
- Məntiqi qruplaşdırma: Yalnız bir digər sinif tərəfindən istifadə olunan siniflər onu daxilində məntiqi şəkildə qruplaşdıra bilər.
- İnkişaf etdirilmə və gizlilik: Daxil olan siniflər xarici sinifin xüsusi üzvlərinə giriş imkanı verir.
- Oxunaqlıq və dəstək: Kod daha tənzimlənmiş olur.
Statik olmayan daxil olan siniflərin növləri:
- Yerli siniflər: Metod daxilində elan olunur.
- Anonim siniflər: Adı olmayan siniflər, adətən abstrakt sinif, interfeys və ya baz sinifin nümunəsini yaratmaq üçün istifadə olunur və metodların yenidən təyin olunmasını ehtiva edir.
Yerli sinif:
public class Outer {
public void myMethod() {
class LocalClass {
void display() {
System.out.println("Yerli sinif daxilində");
}
}
LocalClass local = new LocalClass();
local.display();
}
}
Anonim sinif (interfeys nümunəsi ilə nümunə):
interface Greeting {
void sayHello();
}
public class Outer {
public void greet() {
Greeting anonymousGreeting = new Greeting() {
@Override
public void sayHello() {
System.out.println("Anonim sinifdən salam!");
}
};
anonymousGreeting.sayHello();
}
}