Gibt es einen guten Grund, Parameter zu verwenden, die Felder schattieren? Was ist der Unterschied zwischen diesen beiden:Gibt es einen guten Grund, Parameter zu verwenden, die Felder schattieren?
public class Point {
public int x = 0;
public int y = 0;
//constructor
public Point(int a, int b) {
x = a;
y = b;
}
}
und
public class Point {
public int x = 0;
public int y = 0;
//constructor
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
Und was ist, wenn Sie die this
Schlüsselwort ohne Parameter verwenden, die in diesem Beispiel Schattenfelder (Ich vermute, es ist einfach nicht notwendig):
public class Point {
public int x = 0;
public int y = 0;
//constructor
public Point(int a, int b) {
this.x = a;
this.y = b;
}
}
Und selbst wenn die Felder nicht öffentlich sind, werden sie oft durch die öffentliche API der Klasse (Getter, Setter, Methoden) oder einen Teil des Zustands des Objekts, wie in der Klasse Javadoc beschrieben, offengelegt. Die Verwendung konsistenter Namen hilft wirklich. –