オブジェクト指向言語では、メンバー変数は公開せず、 プロパティなどのインタフェースを介すのが良いとされている。 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の場合、可読性は劣る。