Na pierwszy ogień poszły nie lubiane przeze mnie (chyba tylko dlatego, że z nich nie korzystałem wcześniej) klasy wewnętrzne (ang. Inner Classes). Dzielimy je ze względu na konstrukcję na:
- klasy wewnętrzne zwykłe (Inner Classes)
- klasy wewnętrzne w metodach (Method Inner Classes)
- klasy anonimowe (Anonymous Classes)
- klasy zagnieżdzone (Static nested Classes)
Inner Classes -
Method Inner Classes - może mieć modyfikator dostępu tylko abstract lub final, nigdy nie mogę mieć ich równocześnie. Aby użyć tej klasy trzeba utworzyć instancę tej klasy, poniżej deklaracji klasy. Klasa ta nie może korzystać ze zmiennych instancyjnych metody na rzecz której była utworzona z prostego powodu, zmienne lokalne w metodzie istnieją tylko w cyklu życia metody, chyba, że pole jest oznaczone jako final !
Statyczna MIS (Method Inner Classes) zadeklarowana w statycznej metodzie może mieć dostęp tylko do statycznych pól klasy zewnętrznej (outer class)
Anonymous Classes -
Static nested Classes - (W przeciwieństwie do Inner Class, tutaj nie mamy żadnego powiązania do klasy zewnętrznej)?, jest to właściwie statyczny członek klasy zewnętrznej zatem odwołujemy się do niego w identyczny sposób jak do innych członków statycznych - poprzez adnotację kropkową co skutkuje tym, że nie ma referencji this. Taka klasa może się odnosić wyłącznie do pól statycznych klasy zewnętrznej, nie mając własnej instancji.
I tak trochę poza tematem, interfejs rozszerzający Collection

Brak komentarzy:
Prześlij komentarz