Czy istnieje dobry powód, aby używać parametrów, które zacieniają pola? Jaka jest różnica między tymi dwoma:Czy istnieje dobry powód do używania parametrów, które zacieniają pola?
public class Point {
public int x = 0;
public int y = 0;
//constructor
public Point(int a, int b) {
x = a;
y = b;
}
}
i
public class Point {
public int x = 0;
public int y = 0;
//constructor
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
A co jeśli używasz słowa kluczowego this
bez parametrów pola cienia w tym przykładzie (zgaduję, że to tylko niepotrzebny):
public class Point {
public int x = 0;
public int y = 0;
//constructor
public Point(int a, int b) {
this.x = a;
this.y = b;
}
}
Nawet jeśli pola nie są publiczne, często są one udostępniane przez publiczny interfejs API tej klasy (metody pobierające, ustawiające, metody) lub część stanu obiektu, jak opisano w klasie javadoc. Używanie spójnych nazw naprawdę pomaga. –