Bloki inicjalizacyjne

Halo, dziś temat ważny. Dlaczego? Ponieważ poruszam temat, o którym jest bardzo cicho. Osobiście nie spotkałem się z tym tematem ani w żadnym kursie, ani na uczelni.

Czy naprawdę jest on taki ważny? Ważne jest wszystko, co ma jakieś konkretne zastosowanie. Także nic, tylko brać się do lektury ^^.

Wprowadzenie

Jest to narzędzie które pomaga nam organizować proces tworzenia nowych instancji (obiektów) oraz odwoływania się do statycznych pól naszej klasy.

Bloki statyczne

W ostatnim wpisie poruszaliśmy temat modyfikatorów statycznych, czyli pól które powiązane są z samą klasą a nie jej obiektem. Podobnie jest z blokami statycznymi. Są one inicjalizowane tylko raz w przypadku pierwszego odwołania się do klasy.

Czas na najważniejsze pytanie, w jakim celu stosować bloki statyczne? Odpowiedź jest prosta, jeżeli początkowa wartość naszej zmiennej statycznej nie może zostać opisana jedną linijką, lub jest na tyle skomplikowana, że lepiej przejrzyście rozpisać ją w bloku statycznym.

Warto zaznaczyć to, że z bloku statycznego możemy odwoływać się tylko do statycznych pól oraz metod.

Bloki instancyjne

Tutaj sprawa wygląda trochę inaczej. Bloki instancyjne, jak sama nazwa wskazuje, wykonywane są w trakcie tworzenia nowego obiektu.
Ale jak to? Przecież konstruktor robi dokładnie to samo, prawda? Dokładnie tak. Okazuje się jednak, że bloki instancyjne także mają swoje zastosowanie. W przypadku, gdy posiadamy więcej niż jeden konstruktor, możemy wykorzystać go do kodu, który powielałby się w każdym z nich.

W powyższym kodzie przed każdym wywołaniem konstruktora (niezależnie którego) chcieliśmy wyświetlić wcześniejszą wartość zmiennej statycznej.

Jak widać bloki instancyjne wykonują się przed konstruktorami, jest tutaj jednak jeden mały haczyk. W przypadku, gdy nasz konstruktor wywołuje konstruktor nadklasy, kolejność wygląda następująco:
konstruktor nadklasy -> blok inicjalizacyjny podklasy -> konstruktor podklasy
Nie jest to już tak do końca intuicyjne, dlatego można tutaj łatwo popełnić błędy. Wspomogę was więc przykładem.

Jak widać pomimo, że linijki oznaczone 1 oraz 3 znajdują się jedna pod drugą to nie są wykonywane jedna po drugiej. Proszę tego pilnować, bo tak jak powiedziałem łatwo popełnić tutaj błędy.

Takim oto sposobem dotarliśmy do końca wpisu. Nie są to rzeczy trudne, warto jednak być świadomym tego jakie możliwości są nam dostarczane razem z językiem.

Your email address will not be published. Required fields are marked *

*