Mam klasę iw tej klasie mam to:
//some code
private int[] data = new int[3];
//some code
Następnie w moim konstruktorze:
public Date(){
data[0] = 0;
data[1] = 0;
data[2] = 0;
}
Jeśli to zrobię, wszystko jest w porządku. Domyślne wartości danych są inicjowane, ale jeśli zamiast tego zrobię to:
public Date(){
int[] data = {0,0,0};
}
To mówi:
Local variable hides a field
Czemu?
Jaki jest najlepszy sposób na zainicjowanie tablicy wewnątrz konstruktora?
datapo"//some code"ma zasięg całej klasy. podczas gdy zmiennadataw konstruktorze ma zakres wewnątrz konstruktora. a po zakończeniu konstruktora zmienna zostanie zniszczona. A takżedatazmienna wewnątrz konstruktora ukrywa zmienną o tej samej nazwie w klasie. To uzasadnia błądLocal variable hides a field