*プログラム初心者のため、表現等に誤りがあるかもしれません。すいません。
前提・実現したいこと
環境:java version 13.0.2
OS : windows10
テキストエディタはAtomで、コンパイル、実行等もAtomで行っています。
●やりたいこと
異なるパッケージにあるクラスで定義した変数を、別のパッケージのクラスで使いたいです。
ただ、エラー内容から推測するに、そもそもjavaの機能的にできないことのようにも感じます。
仮に、機能的にできるのであれば、エラーの原因を教えていただきたいです。
該当のソースコード
①Mainのクラスです。
ディレクトリ:./packageA/Main.java
package packageA; public class Main{ public static void main(String[] args){ packageA.SampleA a=new packageA.SampleA(); packageB.SampleB b=new packageB.SampleB(); packageB.SampleC c=new packageB.SampleC(); c.test(); a.test(); //b.Call(c); b.Call(a); } }
②①と同じパッケージにあるファイルです。
ディレクトリ:./packageA/SampleA.java
package packageA; public class SampleA{ int number; public void test(){ number=10; System.out.println("SampleAの"+number); } }
③ ①②とは異なるパッケージのファイルです。このファイルで②の変数を利用しようとしています。
ディレクトリ:./packageB/SampleB.java
package packageB; public class SampleB{ //public void Call(packageB.SampleC b){ public void Call(packageA.SampleA b){ System.out.println("SampleBの"+b.number); } }
④③と同じパッケージのファイルです。ソースコードは②とほぼ同じです。パッケージだけが異なります。
ディレクトリ:./packageB/SampleC.java
package packageB; public class SampleC{ int number; public void test(){ number=20; System.out.println("SampleCの"+number); } }
上記①~④をコンパイルすると、以下のようなエラーメッセージが出ます。
javac .\packageA\Main.java .\packageA\SampleA.java .\packageB\SampleB.java .\packageB\SampleC.java エラーメッセージ \packageB\SampleB.java:7: エラー: SampleAのnumberはpublicではありません。パッケージ外からはアクセスできません System.out.println("SampleB縺ョ"+b.number); ^ エラー1個
試したこと
本来は、別のファイルで作業をしているのですが、無駄を省いた簡易版を作成しました。
ネットや本で色々と調べ、試してみましたが、中々上手くいきません。
同一パッケージでの変数は使うことができました。(上記②と④のコメントアウトを外して実行)。原因が異なるパッケージの間の変数を利用していることだと分かってはいるのですが、解決しません。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー