Cytat z książki:
Wiele klas zawiera konstruktor bezargumentowy tworzący obiekty o określonym domyślnym
stanie początkowym. Poniżej znajduje się przykładowy konstruktor domyślny klasy Employee:
public Employee()
{
name = "";
salary = 0;
hireDay = new Date();
}
Konstruktor domyślny jest stosowany, w przypadku gdy programista nie utworzy żadnego
konstruktora. Konstruktor ten ustawia wszystkie pola na wartości domyślne. W związku
z tym wszystkie dane liczbowe będące składowymi obiektu miałyby wartość 0, wartości
logiczne byłyby ustawione na false, a zmienne obiektowe na null.
Jeśli klasa ma przynajmniej jeden konstruktor, ale nie ma konstruktora domyślnego, nie można
tworzyć jej obiektów bez podania odpowiednich parametrów konstrukcyjnych.
Pytanie:
Coś mi tutaj nie pasuje w tym tłumaczeniu. Najpierw pisze że stosowany jest konstruktor
domyślny gdy programista nie utworzy żadnego konstruktora. - Ja to rozumie tak że jeśli w
danej klasie sa zdefiniowane pola klasy ale klasa nie zawiera żadnego konstruktora maszyna wirtualna
stosuje domyślny konstruktor i uzupełnia zmienne wartościami domyślnymi.
Później piszą że jak klasa ma przynajmniej jeden konstruktor ale nie ma domyślnego to nie można
tworzyć jej obiektów bez podania odpowiednich parametrów konstrukcyjnych. Przeciez wcześniej
pisano że domyślny konstruktor stosujemy gdy nie ma żadnego innego konstruktora.
Nie zbyt jasno to napisali kiedy w końcu stosowany jest dany konstruktor. Ponadto w innym kursie
znalazłem taką treść:
Każda klasa posiada domyślnie jeden niejawny konstruktor (bez parametrów). Jeżeli jednak
zdefiniujesz w swojej klasie chociaż jeden konstruktor przyjmujący dowolne argumenty, to
konstruktor domyślny przestaje istnieć.
Jedno z drugim sie wyklucza. Może ktoś napisze jak to faktycznie jest bo ja nie mogę
z tego wywnioskować, bo widzę sprzeczności.