Wpis z mikrobloga

@Aureos to zależy, powinno być w konstruktorze opisane co się dzieje, albo przy jakimś polu. Jak pokażesz kod/podasz przykład to postaram się pomóc, bo to pytanie jest dość ogólne
  • Odpowiedz
Jeśli mamy 2 konstruktory z tą samą nazwą


@Aureos: Innej opcji niż ta sama nazwa nie ma. Jeśli będzie miał inną nazwę to będzie błąd kompilacji.

Jeśli stworzysz obiekt wywołując konstruktor z pojedynczym parametrem to zostanie wywołany tylko ten konstruktor.

Przed wywołaniem konstruktora dla pól w klasie przypisywane są domyślne wartości. Dla referencji null, dla typów prostych w uproszczeniu zera i false dla boolean. Jeśli w konstruktorze nie zostaną nadpisane to
  • Odpowiedz
@Aureos: jak masz konstruktor i parametry, to coś z tymi parametrami robisz. Jak nie masz parametru to nic z nim nie zrobisz.

I teraz zależy gdzie to wykorzystujesz.

Przykład 1. Wypisujesz to co w konstruktorze.

class Wypisywasz {

public Wypisywacz(String a, String b) {
System.out.println(a);
System.out.println(b);
}

public Wypisywacz(String a) {
System.out.println(a);
// nie możesz wypisać b, bo go tu nie ma
}

}

Przykład 2. Często w klasach używa się
  • Odpowiedz
@Aureos tu chłopaki Ci dobrze mówią. Ja bym tylko dodał, że z typami prymitywnymi jest ciut inaczej, bo jak ich nie zainicjalizujesz to przyjmą domyślną wartość, np. boolean ma false domyślnie. Jeżeli masz obiekty, to jak nie zainicjalizujesz to będzie null.
  • Odpowiedz
To tak samo jakbyś zrobił po prostu:

String nazwisko;

System.out.print(nazwisko);// null


@mk321: @Aureos: Tutaj warto zwrócić uwagę na jeszcze jedną rzecz. Wartości domyślne są przypisywane tylko dla pól w klasie. Zmienne lokalne (np. w metodzie) muszą być przed pierwszym użyciem zainicjalizowane (coś do nich trzeba przypisać).
Te dwie linie wklejone czy to do klasy czy do metody Ci się nie skompilują. @mk321 w skrócie zapisał coś takiego

class Student{
String
  • Odpowiedz