オブジェクト指向言語では、メンバー変数は公開せず、 プロパティなどのインタフェースを介すのが良いとされている。 Java はプロパティをサポートしていないため、メソッドを使うことになる。
Javaではデフォルトではインライン展開が有効になっているため、 メソッドを使っても実行時間上のロスはないが、可読性はプロパティより相当に劣る。
C# で取り上げた例題[1]を Java に置き換えてみる。
class Point {
private double _x;
private double _y;
public void setX(double x) { _x = x; }
public double getX() { return _x; }
public void setY(double y) { _y = y; }
public double getY() { return _y; }
public void setLon(double lon) { _x = Lon2X(lon); }
public double getLon() { return X2Lon(_x); }
public vid setLat(double lat) { _y = Lat2Y(lat); }
public getLat() { return Y2Lat(_y); }
}
使い方としては p.setX(x)、p.setY(y)、 double lon = p.getLon()、p.setLat(lat) などとなる。 C#の場合は p.x = x、p.y = y、double lon = p.lon、p.lat = lat で済むため、Javaの場合、可読性は劣る。