Вкладені і внутрішні класи в java

Внутрішнім класом називають клас, який є членом іншого класу. Існує чотири базових типу внутрішніх класів в Java:

Nested Inner classes (вкладені внутрішні класи)

Static Nested classes or Member of outer class (статичні вкладені класи)

Method Local Inner classes (внутрішні класи в локальному методі)

Anonymous Inner classes (анонімні класи)

1. Nested Inner classes

Вкладений внутрішній клас може отримати доступ до будь-якого приватному полю або методу екземпляра зовнішнього класу. Вкладений внутрішній клас може мати будь-який модифікатор доступу (private. Package - private. Protected. Public). Так само як і класи, інтерфейси можуть бути вкладеними і мати модифікатори доступу.

Наступний приклад демонструє використання вкладеного внутрішнього класу:

Основна причина, по якій необхідно оголошувати локальну змінну як фінальну полягає в тому що, локальна змінна живе в стеці до тих пір, поки метод знаходиться в стеку. А в разі використання внутрішнього класу можлива ситуація, коли екземпляр внутрішнього класу живе в купі і після виходу з методу, але йому може бути необхідний доступ до змінної, оголошеної в методі. Для цього, компілятор може зберегти копію локальної змінної, яка оголошена як фінальна, в поле внутрішнього класу для подальшого використання.

Внутрішній клас в локальному методі не може бути позначений як private. protected. static і transient. але може бути позначений як abstract і final. але не обидва одночасно.

4. Anonymous Inner classes

Анонімні внутрішні класи оголошуються без вказівки імені класу. Вони можуть бути створені двома шляхами:

  1. Як спадкоємець певного класу

У коді вище ми створюємо об'єкт анонімного внутрішнього класу, але цей анонімний внутрішній клас є реалізацією інтерфейсу Hello.

Будь анонімний внутрішній клас може за один раз реалізувати тільки один інтерфейс. Так само, за один раз можна або розширити клас, або реалізувати інтерфейс, але не одночасно.

Приклади коду зі статті:

Приклади коду від перекладача:

More from my site

  • Вкладені і внутрішні класи в java
    Вебінар «Як написати рекурсию, щоб не зарекурсіться, і знаходимо голку навіть в стозі сіна»
  • Вкладені і внутрішні класи в java
    Вебінар «Використання Stream API при роботі з колекціями»
  • Вкладені і внутрішні класи в java
    Оптимізація сортування вставками в Java
  • Вкладені і внутрішні класи в java
    Вебінар «Від ідеї до прототипу за 1 годину»
  • Вкладені і внутрішні класи в java
    Вебінар «Java-пасаж: розбираємося з масивами в Java. Best practices. »
  • Вкладені і внутрішні класи в java
    Вебінар «Все, що ви хотіли знати про лямбда в Java, але боялися запитати. Extended Edition. »

відмінно написано і дуже зрозумілі приклади

Спасибі, хороший матеріал.
Пишіть ще!

Вебінар «Java Collections framework під мікроскопом»

Знайти без секундоміра за мінімум збігів 3 найшвидших коні серед 25

Вкладені і внутрішні класи в java

Вкладені і внутрішні класи в java

Вкладені і внутрішні класи в java

цікаві теми

Схожі статті