SCJP, podejście ósme

Wielkimi krokami zbliżam się do końca podręcznika. Jakoś nie czuję się o wiele mądrzejszy, ale to głupie odczucie i próbuję z nim walczyć. W końcu coś z tej wiedzy w głowie zostaje – im więcej w sumie tym lepiej – SCJP jednak tych kilka setek kosztuje. Lepiej nie podchodzić dwa razy.

Dziś na tapecie krótki rozdzialik o klasach wewnętrznych. Przyznam szczerze, że popełniłem w teście raptem 2 błędy zatem i pisać nie za bardzo mam o czym. Sam bowiem rozdział poświęcony temu zagadnieniu ma może 20 stron – naprawdę nie za wiele można na tylu stronach zmieścić. Jednakże oto lista:

  • dostęp – zasadniczo właśnie dostępności/widoczności poszczególnych klas czy metod dotyczy większość pytań. Tutaj napiszę tylko, że w przypadku method-local inner class ma ona nielimitowany dostęp do klasy otaczającej. Taki kod:

    public class Tester {
    final String lancuch = new String("Chlebik");
    public void pokazKlaseWewnetrzna()
    {
    class takaSobieKlasa {
    void hej()
    {
    System.out.println( lancuch );
    }
    }
    }
    }

    jest jak najbardziej w porządku i zadziała bez problemu.

  • pamiętaj o statykach – zarówno o tym, że metody niestatyczne nie mogą być wywoływane ze statycznych metod, a także, że statyczne zmienne trzymają się twardo i mają za nic tworzenie instancji klasy.
  • widoczność klas wewnętrznych – kod z pytania testowego:
    class A { void m() { System.out.println("outer"); } }
    public class TestInners {
    public static void main(String[] args) {
    new TestInners().go();
    }
    void go() {
    new A().m();
    class A { void m() { System.out.println("inner"); } }
    }
    class A { void m() { System.out.println("middle"); } }
    }

    Pytanie brzmi – co zostanie wyświetlone na wyjściu programu? Odpowiedź: middle. Dlaczego? Ano bo klasa wewnątrz metody jest zadeklarowana dopiero po wywołaniu (czyli po fragmencie new A().m();, w związku z czym jest niewidoczna. Klasa A, która jest w pierwszej linijce kodu jest “poziom wyżej” niż klasa dająca na wyjściu “middle” i dlatego też nie zostanie wykorzystana.
Advertisements

2 thoughts on “SCJP, podejście ósme

  1. chlebik Post author

    Po przygodzie z Groovym staram sie pisac wszedzie dluuuuuzsze formy 🙂 Ale fakt, mozna i w ten sposob.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s