4
private String gg;
public void setgg(String gg) 
  {
   this.gg = gg; 
  } 
public String getgg()
  {
    return gg;
  }

上記のコードを考慮すると、setterとgetterは、クラスのプライベートメンバーを操作するために使用されます。

質問1。セッターがもう1つのパラメーターを取る場合、それはセッターではないと思いますか?

質問2。プライベートデータメンバーの値を設定する通常のパブリックメンバー関数とはどのように異なりますか?

再利用可能なコードの検証をsetterに実装して例外をスローできることはわかっていますが、それでも本当の目的を理解することはできません。

4

6 に答える 6

5

質問1。セッターがもう1つのパラメーターを取る場合、それはセッターではないと思いますか?

それは値を設定することになるでしょう、しかしそれは多くのフレームワークが値を設定するために探している標準的なセッターメソッドではないでしょう

質問2。プライベートデータメンバーの値を設定する通常のパブリックメンバー関数とはどのように異なりますか?

これらは、標準の命名規則を持つ通常のパブリックメンバーメソッドです。


見る

于 2012-09-18T05:11:12.693 に答える
4

ゲッターとセッターは、単にオブジェクト指向の規則です。多くのフレームワークは、「getX()」および「setX(type)」と呼ばれるメソッドを探します。

これらは他のメソッドと何ら変わりはありませんが、メソッドヘッダーに何かを追加または削除すると、規則が破られます。

于 2012-09-18T05:14:32.650 に答える
2

まず、ゲッターセッターの実装は慣例により間違っています。setGgとgetGgである必要があります。

あなたの質問に答えるために。

  1. ゲッターセッターメソッドは、オブジェクトに値を挿入する標準的な方法になり、多くのフレームワークが採用されています。したがって、前に指摘した命名規則に従う必要があります。

  2. 同じパラメータを受け入れ、同じ値を設定する限り。ただし、命名規則に従わないと、ほとんどのフレームワークはオブジェクトに値を挿入できません。

于 2012-09-18T05:14:58.573 に答える
2

ゲッターとセッターは、カプセル化の事実上の標準として定着しています。つまり、オブジェクトがその内部実装をクラスの関連付けから隠すという考えです。これは、オブジェクト指向プログラミングの全体的な原則です。

例として次のクラスを考えてみましょう。

// boilerplate

public class A {
    public String b;
}

これは、単一のフィールドを持つ完全に有効なJavaクラスです。別のクラスがAのBプロパティを読み取りたい場合、必要なのは次のとおりです。

A a;
String val = a.b;

および書き込みの場合:

a.b = val;

ここでの問題は、Aが内部状態への書き込みを制御しなくなったことです。bの最大長が1024文字であることがわかったとします。bへの書き込みのすべてのインスタンスは、新しい要件に対応するために更新する必要があります。コードベースのサイズによっては、これは非常に高額になる可能性があります。

または、getterとsetterの規則を使用してbをカプセル化したとします。

// boilerplate

public class A {
    private String b;

    public void setB(String val) {
        this.b = val;
    }

    public String getB() {
        return this.b;
    }
}

今、読み取りは次のようになります。

A a;
String val = a.getB();

と書き込み:

a.setB(val);

これは短期的に書くのに時間がかかりますが、セッターを変更するだけで、全体的な変更を統合するのがはるかに簡単になります。

カプセル化は非常に高く評価されているため、他の多くのコメント提供者が指摘しているように、多くのJavaフレームワークはこれを期待しています。

于 2012-09-19T14:32:48.263 に答える
0

他の人がゲッターとセッターの目的を説明しているように。コードスニペットの構文は、JavaBean標準では適切ではないことを指摘しておきます。

private String value;
public void setValue(String value) {
   this.value=value;
 }
 public String getValue() {
   return value;
 }

ブール値の場合

private boolean val;

public void setVal(boolean val) {
  this.val= val;
 }
 public boolean isVal() {
  return val;
  }
于 2012-09-18T05:20:13.733 に答える
0

これはずっと前に尋ねられて答えられました、しかしそれでも将来の読者を助けるために答えを投稿します。他のメンバーがすでに答えたものに追加します。
ゲッターとセッターは、次の点で通常の関数とは異なります。

  1. 通常、通常の方法とは異なり、ビジネスロジックは含まれていません。
  2. ゲッターにはパラメーターが渡されていません
  3. セッターには、パラメーターを1つだけ渡す必要があります
  4. POJO、DAO、Beanなどのクラスの属性を設定および取得するためにのみ使用されます。
  5. 他の人がすでに述べたように、これらはHibernate、Springなどのフレームワークによって使用され、永続化、データの取得、およびその他の多くの操作を実行します。
  6. カプセル化と抽象化の2つの基本概念を実装するために使用されます。
于 2015-12-17T17:23:53.103 に答える