Co to jest domyślny konstruktor?

Konstruktor domyślny to wyspecjalizowana metoda, która tworzy i inicjuje obiekt w programowaniu obiektowym. Istnieje wiele rodzajów konstruktorów, ale konstruktor domyślny musi spełniać jedno z dwóch określonych kryteriów, oprócz tworzenia i inicjowania obiektu. Musi albo nie mieć parametrów, w takim przypadku może być również nazywany konstruktorem nullary, albo musi przypisywać wartości domyślne do wszystkich parametrów, które ma możliwość ustawienia. Niektóre języki komputerowe niejawnie określają domyślny konstruktor nullary, jeśli programista w ogóle nie określi konstruktora. Po zapisaniu dowolnego typu konstruktora domyślny konstruktor o wartości null nie jest już określany i w razie potrzeby musi być jawnie napisany.

W przypadku języków komputerowych, które umożliwiają dziedziczenie obiektowe, domyślne konstruktory w podklasach muszą być precyzyjnie połączone z konstruktorami w nadklasach. Konstruktory podklas zawsze muszą wywoływać konstruktory nadklas, zanim zrobią cokolwiek specyficznego dla podklasy. W niektórych językach, takich jak Java®, konstruktor podklasy niejawnie wywołuje domyślny konstruktor nullary nadklasy. Jeśli domyślny konstruktor nullary nadklasy nie istnieje, obiekt podklasy nie może zostać poprawnie zbudowany. W tym przypadku podklasy mogą nadal mieć dowolny typ domyślnego konstruktora, ale dostępny konstruktor nadklasy musi być wywołany poprawnie, być może przez przekazanie jego wartości domyślnych, unikalnych dla podklasy.

Niejawne generowanie domyślnego konstruktora nullary ma tę zaletę, że zmniejsza liczbę metod, które programista musi określić i udokumentować, ale ma również wadę, ponieważ może utrudnić konserwację i zrozumienie kodu. Niektórzy programiści uważają pominięcie domyślnego konstruktora za złą praktykę, podczas gdy inni nie. Nic nie stoi na przeszkodzie, aby poszczególni programiści stosowali się do którejkolwiek z tych metod programowania, więc włączenie domyślnego konstruktora nullary do kodu jest w dużej mierze stylistycznym wyborem ze strony programisty. Jeśli konstruktor jest uwzględniony, większość szkół myślenia nakazuje, aby był on komentowany i dokumentowany, tak jak każdy inny konstruktor lub metoda.

Każdy domyślny konstruktor może mieć dołączone modyfikatory dostępu, dzięki czemu konstruktor jest publiczny, chroniony lub prywatny. Daje to konstruktorowi określone zdolności w oparciu o klasę, w której jest określony. Publiczny domyślny konstruktor może służyć do tworzenia nowego obiektu z innej klasy, podczas gdy chroniony konstruktor może być wywoływany tylko z jego własnej klasy i dowolnych podklas. Chronione konstruktory domyślne są często widoczne w hierarchii dziedziczenia. Konstruktory prywatne są zwykle używane tylko w klasach samodzielnych, w których dostępny jest jakiś rodzaj metody fabrycznej, a nie programista.