トップJava > カプセル化

カプセル化

カプセル化

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

リファレンス

[1] プロパティとカプセル化