• ベストアンサー

ゲッタ、セッタの意味

getterとsetterがあり、privateなインスタンス変数を持つクラスと、publicなインスタンス変数を持つクラスってどう違うんですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

class Sample1 { public String s; } class Sample2 { private String s; public void setS(String s) { this.s = s; } public String getS() { return this.s; } } こういうシンプルな実装を比べるなら どっちも同じ意味であり、違いはないわ。 じゃあ、何故getterやsetterを用意するのか、 と言うことになるわね。 そもそも初期のJavaはフィールド(インスタンス変数)はSample1が当たり前だったわ。 実装も楽だしね。 でも、これを覆す概念が出現したの。そいつは「JavaBeans」よ。 JSPからの利用を前提にしているため、インターフェースの統一として get~、set~(~がJSPに記述する部分)、つまりアクセサが仕様として確立したわ。 直接フィールドにアクセスする仕様にしなかったのは利便性のためよ。 例えはDate型で日付を保持しているフィールドtodayがあるとする。 もし、直接フィールドにアクセスすると、利用者は Date型でtodayを取得し、必要に応じて変換することになるわ。 もし、その変換が常に必要ならば getDate内部で変換してから渡してあげたほうが効率いいわね。 setも同様。 Stringのフィールドにnullが渡されたときに""にするとか そういうこともできるわ。 長くなったけど簡単に言うと いろいろ便利だから ね。 主に拡張性や保守性的な意味で。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

setter があれば「おかしな値」を排除できる.

すると、全ての回答が全文表示されます。

関連するQ&A