2011-01-20 3 views
0

メソッドはpublicまたはprivateであるべきですか?Javaのメソッド

カプセル化変数がプライベートであり、メソッドpublic ...が正しいことを確認するには正しいですか?

メソッドの宣言された変数は、プライベートなものですか?

プライベートな方法がある場合(私の推論が正しい場合は変数もプライベートです)、それはカプセル化の例ですか?

+0

Huh?何を求めているのですか? –

+1

この質問に答える方法はありません。いくつかのメソッドは公開され、いくつかのメソッドはプライベートでなければならず、いくつかのメソッドは保護されるべきです。 –

答えて

1

メソッドは、それを含むクラスの外部から呼び出される必要がある場合はプライベートにするか、そうでなければ保護する必要があります。メソッド内で宣言された変数は、そのメソッドのスコープ内でのみ表示されます。あなたはスコープについての詳細を読むことをお勧めします

https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5035301.html

+0

私の目的は、ENCAPSULATIONのコンセプトを理解することでした。 私のアプリケーションにはいくつかのプライベートメソッドがあります。 カプセル化のルールは何ですか? パブリックメソッド - >プライベート変数 またはプライベートメソッド - >プライベート変数? – carl

+0

@carl:通常、一般的なルールは、公開する必要がある場合(またはいくつかのことを公開する必要がある場合を除き)、デフォルトでは非公開にすることです。また、メソッド内で宣言された変数(publicまたはprivate)は、そのメソッド内からアクセスできるため、publicまたはprivateを呼び出すことは意味がありません。 – FrustratedWithFormsDesigner

1

あなたは他の誰かがそれを直接編集したくない場合は通常の変数はプライベートです。他の人が値を変更しても問題がなければ、公開することができます。

同じことがメソッドにあります。内部メソッドのみの場合は、プライベート(または保護)にします。そうでない場合は、パブリックにすることができます。しかし、それはすべての意見の問題です。

+2

ちょうどそれは言われています...あなたは決して*あなたの変数を直接編集する人はいません。これを許可すると、検証、同期化されたアクセス、または他の何十もの何かを強制する能力を放棄します。 *変数は常にプライベートにする必要があります。* ***保護されていない、プライベートな*** - 他の誰か(あなたを含めて数ヶ月)が再びそのクラスを使用する場合。 – cHao

+1

クラスが単にデータストレージとして使用されていない限り。 –

+2

基本的にC/C++の構造体が好きなら、そうです。 *おそらく。*しかし、2番目のデータは、そのデータが正常であることを保証する必要があること、またはそこに座ってスペースを取ること、または同期などを強制することなど、何かをしたいことなどがあります。それらのフィールドが公開されている場合は、トラブルのために。 – cHao

1

公開または非公開にする必要がありますか?

どのように使用するかによって異なります。一部の方法はプライベートで、一部は公開する必要があります。

カプセル化変数がプライベートであり、メソッドpublic ...が正しいことを確認するには正しいですか?

通常、変数はプライベートである必要があります。それはメソッドになると...それは...上記を参照してください。

メソッドの宣言された変数は、プライベートなものですか?

プライベートな方法(私の推論が正しい場合は変数もプライベートです)は、カプセル化の例ですか?

です。

0

誰がそのメソッドを呼び出すことができるかによって異なります。原則として、クラスメンバには最小限の可視性を与える必要があります。あなたのクラスがそのパッケージ内の他のクラスのコンパニオンとしてのみ存在する場合は、クラスパッケージをプライベートにし、メソッドパッケージをプライベートにします。メソッドが同じクラスの他のメソッドのヘルパーである場合は、そのメソッドを非公開にします。メソッドがサブクラスによってのみアクセスされ、クラスがpublicであると想定される場合は、メソッドをprotectedにします。意味親指の一般的なルールとして

4

、下の範囲が優れている、

、民間が保護、保護よりも優れているが、公共などよりも優れています...この方法で またはローカル変数はより、優れていますフィールド変数は、フィールド変数が静的変数よりも優れています。

一般に、他の人がそれに依存する可能性が低いほど、明らかに詳細を公開する必要があります。そうしないとクラスが役に立たなくなるので、バランスを見つけることはソフトウェア設計の良さです。

0

公開または非公開にする必要がありますか?

メソッドが属しているオブジェクトによってのみ使用されている場合は、メソッドをプライベートにする必要があります。

オブジェクトは互いに通信する必要があるため、この目的のすべてのメソッドは公開する必要があります。

例:Webサーバー(サーブレット)を制御するオブジェクトがあり、サーブレットと呼んでいるとします。このオブジェクトは、原子の3Dグラフィックを生成する3DModelerという別のオブジェクトと通信します。 3DModelerオブジェクトは、原子のモデリングに関連する強力な計算などを行うのに役立つあらゆる種類のプライベートメソッドを持つことができます。しかし、グラフィックをモデル化した後、そのグラフィックへの参照を返すパブリックメソッドが必要です。また、それは最初にそれをモデル化できるように、原子に関するパラメータを取るパブリックメソッドを持つ必要があります。

私の化学を許し、それが吸う(それは同位体、などだ場合などには、それは、定期的な要素を知っている必要がある)、しかし、あなたはする必要がありますカプセル化変数を確保するために

:-)ポイントを得ますプライベートとメソッドpublic ..それは正しい?

はい。 (...いくつかの例外を除いて、すべての場合のように。プライベート変数(依存関係)がセッター/ゲッターを介して設定されているSpringフレームワーク、このアイデアにさらに重点があります。)

宣言された変数で方法はプライベートですか?

これらはメソッドのローカルです。それらはスタックフレームに存在し、スタックフレームがポップされると、それらは忘却されてしまいます。 (つまり、メソッドが完了すると、それらはもはや存在しません)。

私が私的な方法を持っている場合(私の推論が正しい場合は変数も非公開です)、それはカプセル化の例です?

カプセル化は、データに適用されるアイデアです。そのため、完全な単語は「データカプセル化」です。データが一般にアクセス可能であるという意味でのみ意味があります。その考え方は、データそのものにアクセスできるのではなく、データをプライベートにする必要があり、アクセスする方法はパブリックな方法でなければならないということです。

データが変更された場合、データへのインターフェイスは変わらないため、コードの変更はすべてそのクラスに対してローカルであり、他のクラスには影響しません。