• ベストアンサー

アクセス修飾子とパッケージについて

1:package test1; 2:public class Test1 { 3: static int x = 42; 4:} 1:package test2; 2:public class Test2 extends Test1 { 3: public static void main(String[] args) { 4: System.out.println("x = " + x); 5: } 6:} このようなプログラムにおいて、どこでエラーが起きるのかという問題なのですが、自分としては import test1.* としてTest1クラスを拡張する必要がある為に、Test2の2行目でコンパイルエラーが起こると思うのですが、他の方にはTest1の3行目でint xをpublic指定しておかないと、パッケージ外から、アクセスすることができないと指摘されました。実際はどこでエラーが起こるのでしょう??

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

  • ベストアンサー
  • yutopapa
  • ベストアンサー率47% (139/295)
回答No.1

結局は両方ともコンパイルエラーなのですが。 お察しの通り、 2:public class Test2 extends Test1 { でエラーになります。 import test1.Test1 するか、 extends test1.Test1 とするか、でしょうね。

noname#15844
質問者

お礼

回答有難う御座いました

その他の回答 (3)

回答No.4

#3です。 ごめんなさい。 #3は忘れてください。 恥ずかしい。

回答No.3

4: System.out.println("x = " + x); は 4: System.out.println("x = " + Test1.x); ですよね。 あと、 Test1で宣言されている変数xはprotectedじゃ駄目な気がしますが・・・

回答No.2

両方正しい指摘です。 ・Test1で宣言されている変数xをpublicまたはprotected宣言をする必要があります。 ・Test2については、No1の方が指摘されているように、 test1をimport宣言する必要があります。

noname#15844
質問者

お礼

回答有難う御座いました