You are on page 1of 18

Inner Classes

Krzysztof Gajewski, OSUM, 25.05.2010 r.

Plan wykadu
1. 2. 3. 4. 5. 6. Komentarz wstpny Inner Classes Method-local Inner Classes Anonymous Inner Classes Static Nested Classes Podsumowanie

1.0 Komentarz wstpny


Zalecane jest poznanie klas wewntrznych (KW) W sposb naturalny KW pojawiaj si na egzaminie atwo przez nie straci punkty na egzaminie Cele
Nauka czytania i rozumienia kodu KW Poprawne odpowiedzenie na pytania testowe;)

1.1 Komentarz wstpny


Wielbione lub te znienawidzone przez programistw (od wersji 1.1) Uatwia bd te utrudnia pisanie kodu Definiowanie jednej klasy wewntrz innej Klasa jako element innej klasy (jak zmienne i metody)

2.0 Inner Classes


Uywany, gdy potrzebujemy pewnych waciwoci innej klasy w naszej klasie (np. Obsuga zdarze) Korzy KW czci klasy zewntrznej (KZ), KW ma dostp do wszystkich elementw KZ (nawet prywatnych)

2.0 Typowa (Regullar) KW


Typowa KW nie jest: Statyczna Lokalna w metodzie Anonimowa

2.1 Typowa KW
Przykad MyOuter.java : class MyOuter { class MyInner { } } javac MyOuter.java MyOuter.class , MyOuter$MyInner.class java nie uruchomi KW

2.2 Typowa KW
KW nie moe mie jakichkolwiek deklaracji statycznych Jedyny dostp poprzez obiekt KZ Jak wykorzysta KW:
Tworzenie instancji KZ (jak pokazano wczeniej) Tworzenie instancji KW za pomoc KZ (03 Tworzenie obiektu KW spoza instancji KZ (04)
Nie zainicjujemy KW ze statycznej metody KZ

2.3 Typowa KW
Rnica w tworzeniu instancji KW w KZ (nie statycznej) a tworzeniu instancji KW poza KZ
Wewnrz KZ MyInner mi = new MyInner(); Poza KZ MyOuter.MyInner oraz inicjalizacja new MyOuter().new MyInner(); lub outerObjRef.new MyInner();

2.4 Typowa KW
Referencja do KW lub KZ z poziomu KZ
this przypomnienie
Tylko w obiekcie (nie statycznie) this odnosi si do samego siebie (this nie da dostpu do innego obiektu anieli ten w ktrym zosta wywoany) sposb na zmodyfikowanie samego siebie argument przekazywany do funkcji

this w KW odnosi si do KW Dostp do KZ poprzez nazwaKZ.this (05) Modyfikatory dostpne do deklaracji KW


final abstract public protected static strictfp static -> static nested class private

3.0 Method-Local Inner Classes (MLIC)


KW mona definiowa w metodach (06)
Tu nigdy nie dojdzie do inicjalizacji KW Wymaga zainicjowania (06*) Mona zainicjalizowa wycznie w funkcji, gdzie bya deklaracja Dostp do zmiennych jak w KW Nie mona wykorzysta zmiennych lokalnych funkcji Wyjtkiem te zadeklarowane jako final Obiekt MLIC bdzie istnia o ile zostanie przekazana do niego referencja

3.1 Method-Local Inner Classes (MLIC)


Modyfikatory:
niedostpne public static transient Dostpne abstract private protected

final

4.0 Anonymous Inner Classes (AIC)


Deklarowana bez nazwy klasy (anonimowo) Deklarowana jako argument do metody Dwa rodzaje
plain old (07) dwa przypadki argument declared

4.1 Anonymous Inner Classes (AIC) plain old przypadek I


plain old w przykadzie utworzono podklas klasy Popcorn, przeciono funkcj pop() Podklasa Popcorn jest anonimowa Jak w polimorfimie mona wywoywa tylko te metody zadeklarowane w klasie nadrzdnej Nielegalny przykad (08)

4.2 Anonymous Inner Classes (AIC) plain old przypadek II


I tworzenie podklasy II implementacja danego interfejsu (09)

4.3 Anonymous Inner Classes (AIC)


Argument-Defined Anonymous Inner Classes (10)

5.0 Static Nested Classes (SNC)


Nie s w peni klasami wewntrznymi Nie maj konkretnego zwizku z KZ Nie wwntrzna klasa wewntrz innej Nie jest w peni statyczna jest informacja, e jest to statyczny element klasy zewntrznej Przykad uycia (11) Brak dostpu do niestatycznych metod i elementw KZ

6.0 Podsumowanie
Przedstawiono
1. 2. 3. 4. Inner Classes Method-local Inner Classes Anonymous Inner Classes Static Nested Classes

Warto pozna inner classes ze wzgldu na pytania na egzaminie Powodzenia;)

You might also like