クラスに可視性パッケージprivateがある場合は、最初にメソッドにアクセスできないため、その可視性を持つメソッドを設定する必要はありますか?パッケージプライベートアクセス修飾子
1
A
答えて
1
例えば、パッケージプライベートクラスは、あるインタフェースを実装し、そのパッケージの外で使用することができます。その場合、実装されるメソッドはpublic
でなければなりません。 private
アクセス修飾子によって、同じパッケージ内の一部のメンバーの使用を制限することもできます。
package pkg1;
public interface SomeInterface {
void m();
public static SomeInterface getImplementation() {
return new A();
}
}
class A implements SomeInterface {
@Override
public void m() {}
public void m2() {} // this one cannot be called from other packages
private void m3() {} // this one might be used only in class A
}
package pkg2;
import pkg1.SomeInterface;
public class Main {
public static void main(String[] args) {
SomeInterface implementation = SomeInterface.getImplementation();
implementation.m();
}
}
0
単純な答えは、クラスが実装または拡張される場合です。拡張または実装されない場合はいいえ。他のクラスがプライベートであることを見たくないメソッドや変数を作成することを強くお勧めします。クラスの可視性を変更したい場合は、後で時間を節約し、長期的にはコードをより読みやすくします。
関連する問題
- 1. アクセス修飾子
- 2. 修飾子
- 3. セッション修飾子
- 4. プロパティ修飾子
- 5. アクセス修飾子
- 6. private修飾子
- 7. OpenGL:レイアウト修飾子?
- 8. 修飾子のエラー
- 9. Gtk keypress修飾子
- 10. Vue.js - マウスイベント修飾子
- 11. ConcurrentHashMap修飾子の同期
- 12. パスカルエラー:不正な修飾子
- 13. "git blame"ファイルアクセスコントロール修飾子
- 14. __device__修飾子の範囲
- 15. 同じconst型修飾子
- 16. シェーダ修飾子はSceneKit
- 17. マクロ内のコロン修飾子
- 18. 破棄修飾子-fpermissive
- 19. テンプレートクラスのconst修飾子コンストラクタ
- 20. "Windows"キーのInputGesture修飾子
- 21. 動的アクセス修飾子
- 22. Springアクセス修飾子private
- 23. quadrify maxscriptをスクリプト修飾子
- 24. CodeModel修飾子の順番
- 25. クラスアクセス修飾子 - 内部
- 26. デフォルトのアクセス修飾子7
- 27. $ inc修飾子のMongoKittenサポート
- 28. Delphiのアクセス修飾子
- 29. ResharperとNamespaceエイリアス修飾子
- 30. INFORMATICAソース修飾子SQLクエリ
短い答えはいいえ、何の意味もありません。 –
将来的にクラスの可視性が変更された場合、これらのメソッドへのアクセスを防ぐことができます。 – Nicolas
はい、あります。 setAccessibleの呼び出しを禁止するSecurityManagerの下で実行していても、誰かがリフレクションを介してメソッドにアクセスできるようになるかもしれません。一般的に、何かが公的な使用のために意図されていない場合、それを一般に公開しないでください。 – VGR