Middle
Кайсы ички класстардын түрлөрү бар?
sobes.tech AI
AIден жооп
Статикалык ички класстар жана ички класстар (статикалык эмес ички класстар).
-
Статикалык ички класстар:
staticачкыч сөзү менен жарыяланат.- Тек гана тышкы класстын статикалык мүчөлөрүнө ( талаалар жана ыкмалар) кире алат, анын ичинде жеке (private).
- Түздөн-түз тышкы класстын статикалык эмес мүчөлөрүнө кире албайт.
- Тышкы класстын экземплярсыз түзүлө алат.
class Outer { private static int staticVar = 10; private int instanceVar = 20; static class StaticNested { void display() { System.out.println("Статикалык өзгөрүү: " + staticVar); // System.out.println("Экземпляр өзгөрүү: " + instanceVar); // Компиляция ката } } } -
Ички класстар (статикалык эмес ички класстар):
staticачкыч сөзү жок.- Бардык мүчөлөргө (статикалык жана статикалык эмес) толук кире алат, анын ичинде жеке (private).
- Статикалык мүчөлөрдү ( талаалар жана ыкмалар) камтыша албайт, гана финалдык константтарды камтыйт.
- Алардын түзүлүшү үчүн тышкы класстын экземпляры керек.
class Outer { private static int staticVar = 10; private int instanceVar = 20; class Inner { void display() { System.out.println("Статикалык өзгөрүү: " + staticVar); System.out.println("Экземпляр өзгөрүү: " + instanceVar); } } } -
Жергиликтүү класстар:
- Методтордун, конструкторлордун же инциализациялык блоктордун ичинде жарыяланат.
- Бардык финалдык жана effectively final жергиликтүү өзгөрмөлөргө, ошондой эле алардын аныкталган тышкы класстын мүчөлөрүнө кире алат.
- Алардын көрүнүү чөйрөсү жарыяланган блок менен чектелет.
class Outer { void myMethod() { final int localVar = 5; // Effectively final class LocalInner { void display() { System.out.println("Жергиликтүү өзгөрүү: " + localVar); } } LocalInner local = new LocalInner(); local.display(); } } -
Анонимдүү класстар:
- Аты жок.
- Бир эле учурда түзүлүп, инстанцияланат.
- Интерфейстердин же класстардын кеңейтүүлөрүн түзүү үчүн кеңири колдонулат.
interface MyInterface { void doSomething(); } class Outer { void myMethod() { MyInterface anon = new MyInterface() { @Override public void doSomething() { System.out.println("Анонимдүү бир нерсе кылуу."); } }; anon.doSomething(); } }
Статикалык ички класстар менен ички класстардын негизги айырмачылыктары:
| Өзгөчөлүк | Статикалык ички класс | Ички класс |
|---|---|---|
| Ключ сөз | static |
Жок |
| Мүчөлөргө кирүү | Тек гана тышкы класстын статикалык мүчөлөрүнө | Бардык тышкы класстын мүчөлөрүнө |
| Экземпляр түзүү | Тышкы класстын экземплярсыз түзүлөт | Тышкы класстын экземпляры талап кылынат |