- ベストアンサー
クラスとメソッド間での可視性の違いについて
以下の Aクラスと Bクラスで、違いが出る状況ってあるのでしょうか? --------------------------- package p1; class A { void excute(){ } } --------------------------- package p2; class B { public void excute(){ } } ----------------------------
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> AAクラスをパッケージ外で作った場合はexcuteは見えませんが、 > BBクラスの場合はパッケージ外でもexcuteが見えてしまいますね。 いやいや、別パッケージからAクラスやBクラスは見えないのだから、別パッケージにサブクラスは作れません。 ただし、AやBと同じパッケージにpublicなサブクラスAA・BBをつくり、さらに別パッケージからAAやBBにアクセスするとき、AAのexcuteにはアクセスできませんが、BBのにはアクセスできます。
その他の回答 (3)
- chi-kon
- ベストアンサー率43% (58/132)
#2のchi-konです。 失礼しました。 >AAクラスをパッケージ外で作った場合はexcuteは見えませんが、 AAクラスをパッケージ外からアクセスした場合は... に修正致します。 #3の方のおっしゃる通りです。
お礼
参考になりました。ありがとうございます。
- chi-kon
- ベストアンサー率43% (58/132)
なるほど。 そういう意味の質問だったとは、早とちりでした。 A,Bクラスについてはそう違いはないかもしれません。 しかしAクラスを継承したpublicなAAクラスと Bクラスを継承したpublicなBBクラスをつくると その可視性に違いがでてきますね。 AAクラスをパッケージ外で作った場合はexcuteは見えませんが、 BBクラスの場合はパッケージ外でもexcuteが見えてしまいますね。
お礼
参考になりました。ありがとうございます。
- chi-kon
- ベストアンサー率43% (58/132)
Aはp1パッケージの外のクラスからはアクセスできないのでは? public なんでもOK ↑ ☆無指定自パッケージ内アクセス ↑ protected サブクラス ↑ private クラス内 っていう感じですね。
お礼
ご回答ありがとうございます。 Bクラスも、パッケージの外からはアクセスできませんよね?public class ではないから・・。
お礼
参考になりました。ありがとうございます。