2009-08-29 8 views

答えて

18

package-private(「public class」ではなく「class」で宣言されています)のJavaクラスを使用している場合、内部のメソッドがpublicまたはprotectedまたはpackage-privateの場合は、右?

しかし、パッケージプライベートクラスを継承する「保護された」クラスまたは「パブリック」クラスを宣言すると、元のクラスのメンバの可視性はになります。が問題になります。

@kmccoyが指摘するように、クラスをfinalとして宣言すると、サブクラスの可能性がなくなります。

これは本当にウィンドウドレッシングだけです。サブクラスを実際に作成する必要があると判断した場合は、finalを削除するだけです。次に、アクセス修飾子の選択が重要な状況に戻ります。

IMOの場合は、今必要でない場合でも、最も適切な修飾語を選択する必要があります。他に何もない場合は、抽象境界がどこにあるかについてのあなたの意図を文書化する必要があります。

+0

クラスが「final class SomeClass」の場合、メンバーの可視性は問題になりますか? – kmccoy

+2

最終的な修飾子が将来のリファクタリングで削除された場合:これはソフトウェアであることを覚えておいてください。「final」は「決して変わらない」という意味ではなく、「このタイプの子クラスを、たった今。" –

4

パッケージクラス内のパブリックメソッドは、同じパッケージ内のクラスに対してpublicです。しかし、プライベートメソッドは同じパッケージ内のクラスからアクセスできません。

関連する問題