• ベストアンサー

クラスとメソッド間での可視性の違いについて

以下の Aクラスと Bクラスで、違いが出る状況ってあるのでしょうか? --------------------------- package p1; class A { void excute(){ } } --------------------------- package p2; class B { public void excute(){ } } ----------------------------

質問者が選んだベストアンサー

  • ベストアンサー
  • UKY
  • ベストアンサー率50% (604/1207)
回答No.3

> AAクラスをパッケージ外で作った場合はexcuteは見えませんが、 > BBクラスの場合はパッケージ外でもexcuteが見えてしまいますね。 いやいや、別パッケージからAクラスやBクラスは見えないのだから、別パッケージにサブクラスは作れません。 ただし、AやBと同じパッケージにpublicなサブクラスAA・BBをつくり、さらに別パッケージからAAやBBにアクセスするとき、AAのexcuteにはアクセスできませんが、BBのにはアクセスできます。

masa1214
質問者

お礼

参考になりました。ありがとうございます。

その他の回答 (3)

  • chi-kon
  • ベストアンサー率43% (58/132)
回答No.4

#2のchi-konです。 失礼しました。 >AAクラスをパッケージ外で作った場合はexcuteは見えませんが、 AAクラスをパッケージ外からアクセスした場合は... に修正致します。 #3の方のおっしゃる通りです。

masa1214
質問者

お礼

参考になりました。ありがとうございます。

  • chi-kon
  • ベストアンサー率43% (58/132)
回答No.2

なるほど。 そういう意味の質問だったとは、早とちりでした。 A,Bクラスについてはそう違いはないかもしれません。 しかしAクラスを継承したpublicなAAクラスと Bクラスを継承したpublicなBBクラスをつくると その可視性に違いがでてきますね。 AAクラスをパッケージ外で作った場合はexcuteは見えませんが、 BBクラスの場合はパッケージ外でもexcuteが見えてしまいますね。

masa1214
質問者

お礼

参考になりました。ありがとうございます。

  • chi-kon
  • ベストアンサー率43% (58/132)
回答No.1

Aはp1パッケージの外のクラスからはアクセスできないのでは? public なんでもOK ↑ ☆無指定自パッケージ内アクセス ↑ protected サブクラス ↑ private クラス内 っていう感じですね。

masa1214
質問者

お礼

ご回答ありがとうございます。 Bクラスも、パッケージの外からはアクセスできませんよね?public class ではないから・・。