I_R_W13A_M01_JAVA Konstruktory i destruktory w Java
Konstruktory w języku Java
W języku Java konstruktory pełnią funkcję zgodną z założeniami programowania obiektowego. Konstruktor to metoda wywoływana w trakcie tworzenia obiektu, najczęściej służąca do nadania początkowych wartości polom w klasie. Każda klasa ma swój domyślny, pusty konstruktor, który nie zmienia żadnych pól. W przypadku, kiedy programista definiuje własny konstruktor, ten domyślny znika – może jednak zostać dodany ręcznie. Konstruktory mają dwie cechy specjalne, które wyróżniają je na tle innych metod:
nazwy konstruktorów są zawsze takie same, jak nazwa klasy, w której się znajdują,
konstruktory nie zwracają żadnej wartości.
Zdefiniowany w języku Java konstruktor należący do klasy Czlowiek:
Zwróć uwagę, że w języku Java definicji klasy nie kończy się znakiem średnika (;) po ostatnim prawym nawiasie klamrowym.
Samodzielnie zdefiniowane konstruktory ułatwiają przypisywanie wartości polom obiektu. Przedstawiony konstruktor Czlowiek() można dodatkowo ulepszyć.
Obecnie musimy nadać nazwy argumentom, których wartości zostaną przypisane odpowiednim polom (przykładowo: argument o nazwie kon_imie odpowiada polu imie). Wprowadza to bałagan w kodzie.
Usuniemy tę niedogodność, używając w definicji konstruktora specjalnej referencji this. Wskazuje ona obiekt, dla którego wywołana została metoda (w przypadku wywołania konstruktora będzie to powstająca właśnie instancja klasy Czlowiek).
Zmodyfikujmy zatem klasę Czlowiek:
Konstruktor wygląda bardziej czytelnie niż poprzednio, a działa tak samo.
Warto wspomnieć, że definicje klas w języku Java mogą zawierać wiele konstruktorów. Muszą się one jednak różnić albo liczbą przyjmowanych argumentów, albo ich typem. Właśnie na podstawie liczby lub typu argumentów program dobiera odpowiedni konstruktor podczas tworzenia obiektu.
Pamiętajmy, że konstruktor domyślny tworzony automatycznie (chociaż może on zostać zdefiniowany manualnie), nie ma żadnych argumentów. Oto jego budowa: