вівторок, 19 березня 2013 р.

Java. Inner та Nested класи. Теорія.

Nested (вкладений) клас - це клас, що об"явлений всередині об"явленого іншого класу:


public class OuterClass {
...
static class StaticNestedClass{
...
}
}


Вкладені класи поділяють на
статичні (static) та нестатичні (non-static). Нестатичні вкладені класи називають внутрішніми (Inner)

Статичні вкладені класи (Static nested classes) не мають доступу до нестатичних полей та методів класу, в якому вони об"явлені (в прикладі вище - Outer Class) (аналогічно статичним методам, що об"явлені всередині класу). Доступ до нестатичних полей та методів здійснюється через посилання на екземпляр Outer Class. Окрім цього, Static nested classes мають доступ до будь-яких статичних методів зовнішнього класу, в тому числі й приватним.
Вказані класи дозволяють логічно групувати об"єкти, покращувати інкапсуляцію та економити  пам"ять.
Причини створити внутрішній (Inner) клас:
- доступ: внутрішні класи мають спеціальний доступ до змінних/полей класів, що їх містять.
- структура: деколи краще сортувати клас в namespace іншого класу, особливо якщо він не буде використовуватися в іншому контексті
- зручність: відпадає необхідність створювати новий файл для кожного типу, особливо якщо останній використовується лише один раз.

Існує 4 типи внутрішніх класів:
static inner class: об"являється як статичний член іншого класу;
instance inner class: об"являється як instance член іншого класу;
local inner class: об"являється всередині як instance метод іншого класу;
anonymous inner class: як локальний внутрішній клас, але записується як вираз,що повертає один one-off об"єкт.

Немає коментарів:

Дописати коментар