Middle
Javaда ички (inner) жана ички (nested) класстар арасында кандай айырмачылык бар?
sobes.tech AI
AIден жооп
-
Ички класс (Nested classes): Чыгарган класстын статикалык мүчөлөрү. Чыгарган класстын статикалык эмес мүчөлөрүнө (жана талааларга жана ыкмаларга) түздөн-түз кире албайт, тек гана чыгараган класстын экземпляры аркылуу.
staticачкыч сөзү менен жарыяланат. -
Ички класстар (Inner classes): Чыгарган класстын статикалык эмес мүчөлөрү. Бардык мүчөлөргө (статикалык жана статикалык эмес) жана анын ичинде жеке мүчөлөргө да толук кирүүгө мүмкүнчүлүк берет. Ички класстын экземплярын түзүү үчүн чыгараган класстын экземпляры керек.
staticсөзүн колдонбойт.
Мисал:
// Чыгарган класс
class Outer {
private int outerField = 10;
private static int staticOuterField = 20;
// Статикалык ички класс
static class StaticNestedClass {
void display() {
// Тек гана статикалык мүчөлөргө кирүү
System.out.println("Static nested: " + staticOuterField);
// outerField түздөн-түз жеткиликсиз
// System.out.println(outerField); // Компиляция ката
}
}
// Статикалык эмес ички класс
class InnerClass {
void display() {
// Бардык мүчөлөргө кирүү
System.out.println("Inner: " + outerField);
System.out.println("Inner (static): " + staticOuterField);
}
}
}
// Колдонуу
public class Main {
public static void main(String[] args) {
// Статикалык ички класс үчүн экземпляр түзүү
Outer.StaticNestedClass staticNested = new Outer.StaticNestedClass();
staticNested.display();
// Ички класс үчүн чыгараган класстын экземпляры керек
Outer outer = new Outer();
Outer.InnerClass inner = outer.new InnerClass();
inner.display();
}
}
| Өзгөчөлүк | Ички класс (Nested Class) | Ички класс (Inner Class) |
|---|---|---|
| Ключ сөзү | static |
Жок |
| Чыгарган класстын мүчөлөрүнө кирүү | Тек гана статикалык | Бардык |
| Экземпляр түзүү үчүн талап | Жок | Ооба |