私はSCJPをKathy SierraとBert Batesによって読んでいます。 21 that "パブリック修飾子は、インターフェイスにデフォルトアクセスではなくパブリックにする場合に必要です"。これは本当ですか?もしそうであれば、インタフェースメソッドは(常にpublicである)インタフェースが実装クラスの同じパッケージにある場合にのみアクセス可能です...?それはデフォルトのアクセス修飾子の意味なので、私は少し混乱しています。インターフェイスにアクセス修飾子を指定しないと、そのインターフェイスにデフォルトのアクセス権が設定されます。
3
A
答えて
2
インターフェイスにアクセス修飾子を指定しないと、そのインターフェイスはデフォルトアクセス権を持ちますか?
はい、該当します。 Javaの型/フィールド/メソッド(クラス内)は、アクセス修飾子が指定されていない場合、パッケージレベルのアクセス権を持ちます。 inteface型で定義されたメンバは、デフォルトでpublicです。
チュートリアル - Controlling Access to Members of a Classを読んでください。ここでinterface
1
自体はpackage protected
ですが、方法はinterface
がpublic
だけでなく、あなたは、彼らが意味public void bar();
かvoid bar();
宣言することができ
public interface Foo
{
void bar(); // this is always public and nothing else
}
方法である
interface Foo
{
void bar(); // this is always public and nothing else
}
ここでは、デフォルトでは常にpublic
です同じこと、個人的に、私はいつもpublic
を入れます。ex明示的なは常によりも暗黙的です
関連する問題
- 1. メソッドまたはインターフェイスでアクセス修飾子を定義できない理由はありますか?
- 2. アクセス修飾子
- 3. PHP関数の修正(コピーフォルダ - そのアクセス権を設定する)
- 4. Delphiのアクセス修飾子
- 5. スカラユニットテストのセットアップ(アクセス修飾子修飾子を使用しますか?)
- 6. アクセス修飾子の適切な適用
- 7. クラスと内部クラスのアクセス修飾子
- 8. 「部屋」の前に指定された修飾子リストがありません
- 9. 'string'の前に指定された修飾子リストがありません
- 10. 動的アクセス修飾子
- 11. エラー: "デリゲートヘッダーの 'RootViewController'の前に予期される指定子 - 修飾子リスト
- 12. C: "tcp_seq"の前に予期される指定子 - 修飾子リスト
- 13. Delphiの「厳密なプライベート」と「保護された」アクセス修飾子の違いは?
- 14. Apexアクセス指定子とテストクラス
- 15. C#のインターフェイスメンバのアクセス修飾子
- 16. アクセス指定子は
- 17. C++アクセス指定子
- 18. コンパイラエラー:「予期さ指定子修飾子リスト」
- 19. 変数のアクセス修飾子:プライベート対プロテクト
- 20. エラー: 'GKPeerPickerControllerの前に予期していた指定子 - 修飾子リスト
- 21. 「外部」アクセス修飾子がない理由は何ですか?
- 22. SystemVerilogのアクセス指定子
- 23. エラー:期待指定-修飾子リストの前に「QTVisualContextRef」
- 24. Javaでオーバーライドされたメソッドのアクセス修飾子を変更しますか?
- 25. パッケージ修飾子は、パッケージ修飾子でトップレベルのクラスを定義するとき
- 26. なぜアクセス修飾子を使用するのですか
- 27. アンドロイドのカスタム設定修飾子を作成できますか?
- 28. 指定修飾子リストが必要なのはなぜですか?
- 29. C#の型を指定すると、その基底クラスと実装されたインターフェイスを取得します。
- 30. _Atomic型指定子と修飾子の間のC11文法のあいまいさ
*インターフェイス*にパブリックアクセスを許可する場合は、そうする必要があります。ただし、インターフェイスの個々の*メンバ*は常に公開されています。 – cHao
例えば、インタフェース自体にデフォルトのアクセス権がある場合、そのメソッドは実装されているパッケージの外でどのように使用されますか?その場合のインタフェースは実装クラスには見えません。デフォルトのアクセス権がある場合、そのメソッドがpublicになる理由は私には意味がありません:-( – user1142130
パッケージは他のどのクラスからも参照可能です。外部ユーザーはインターフェイスを使用することができません - 既定のアクセスは事実上「内部使用のため」ですが、クラスで公開されるように定義されたメソッドを呼び出すことができます。もちろん、クラスは公開されています。 – cHao