- ベストアンサー
アクセス修飾子とパッケージについて
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指定しておかないと、パッケージ外から、アクセスすることができないと指摘されました。実際はどこでエラーが起こるのでしょう??
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
結局は両方ともコンパイルエラーなのですが。 お察しの通り、 2:public class Test2 extends Test1 { でエラーになります。 import test1.Test1 するか、 extends test1.Test1 とするか、でしょうね。
その他の回答 (3)
- torakiyojp
- ベストアンサー率58% (25/43)
#3です。 ごめんなさい。 #3は忘れてください。 恥ずかしい。
- torakiyojp
- ベストアンサー率58% (25/43)
4: System.out.println("x = " + x); は 4: System.out.println("x = " + Test1.x); ですよね。 あと、 Test1で宣言されている変数xはprotectedじゃ駄目な気がしますが・・・
- swedio1976
- ベストアンサー率40% (2/5)
両方正しい指摘です。 ・Test1で宣言されている変数xをpublicまたはprotected宣言をする必要があります。 ・Test2については、No1の方が指摘されているように、 test1をimport宣言する必要があります。
お礼
回答有難う御座いました
お礼
回答有難う御座いました