前提・実現したいこと
java基礎知識学習中インターフェイスについてエラーが発生した為質問しました。
発生している問題・エラーメッセージ
Rect クラスへのアクセスがエラーとなっている
エラーメッセージ
Exception in thread "main" java.lang.IllegalAccessError: failed to access class Rect from class IfSample3 (Rect is in unnamed module of loader 'app'; IfSample3 is in unnamed module of loader com.sun.tools.javac.launcher.Main$MemoryClassLoader @16022d9d)
at IfSample3.main(IfSample3.java:4)
java
1interface Shape{ 2 public double getArea();//面積を計算して返す抽象メソッド(シグネチャのみ定義) 3 4} 5
java
1class Rect implements Shape{//Shapeを実装 2 3 double width; 4 double height; 5 6 Rect(double width, double height){ 7 this.width = width; 8 this.height = height; 9 } 10 public double getArea(){ 11 return width * height; 12 13 } 14}
java
1class Circle implements Shape{ 2 double radius; 3 4 Circle (double redius){ 5 this.radius = radius; 6 } 7 8 public double getArea(){ 9 return radius * radius * 3.14 ; 10 } 11}
java
1class IfSample3 { 2 public static void main(String[] args){ 3 4 Shape s1 = new Rect(10.0, 5.0); 5 showArea(s1); 6 7 Shape s2 = new Circle(3.0); 8 showArea(s2); 9 } 10 11 static void showArea(Shape shape){ 12 System.out.println(shape.getArea()); 13 14 } 15}
試したこと
IfSample3のjava:4がエラーの表示が出ているのでスペルミスがないか確認
補足情報(FW/ツールのバージョンなど)
Mac Atom
パッケージどうなってますか?同じ階層ですか?
importも含めてコードを全て提示してください。
あと、コード以外はコードのブロック内には入れないでください。
また、コードは全てファイル毎にマークダウンにしてください。
早速お回答ありがとうございます。
修正いたしました。
importなのですがこちらのコード参考書を利用して記述しているのですが
importはありません。
同じ階層(フォルダ)にあれば、import とか必要ないですが、4つのファイルはすべて同じ階層にありますか? m.ts10806 さんと同じ確認ですけど。
すみません。そこの回答をしてませんでした。
全て同じ階層にあります。
Atom からコンパイル、実行してる感じでしょうか?どのように環境構築したか、あるいはどこを見て環境構築したか、説明できますか?
Circle (double redius){
this.radius = radius;
}
蛇足ですが、引数と代入している変数名が異なっています。
まだ初心者なので詳しく説明はできないですが、
基礎からのJavaと言う書籍を使って勉強していまして
環境構築はQiitaでMacでJavaの環境構築を検索して構築しています。
> 環境構築はQiitaでMacでJavaの環境構築を検索して構築しています。
見たページが分かるようであれば、そこのリンクを押してください
あと、コンパイルとかはどうやっていますか?
すみません
解決できました。コンパイルの仕方が間違っていました。
書籍、ネットの記事参照は結構なのですが、バージョンが違うと全く参考にならない時もあります。環境構築とビルドは特にそうですね。
必ずあわせてください。バージョンの違いを吸収するのってそれなりの経験があっても大変です。
回答1件
あなたの回答
tips
プレビュー