abstractとinterface, instanceofを組み合わせたプログラム 面積が計算されない

実現したいこと

以下の実行結果になるようにしたいです。

Rectangle : 長方形

15.0
Circle : 円

12.566370614359172
Polyline : 折れ線
N
面積は求められない

前提

とある課題でjavaでabstractとinterface,instanceofを組み合わせたを作ったところ,以下のエラーメッセージが発生しました。
なお,4行目interface CalcAreaとShapeCheck_Poly2クラスは中身を変えることはできません。

発生している問題・エラーメッセージ

ShapeCheck_Poly2.java:16: エラー: <identifier>がありません Rectangle implements CalcArea{ ^ ShapeCheck_Poly2.java:16: エラー: <identifier>がありません Rectangle implements CalcArea{ ^ ShapeCheck_Poly2.java:18: エラー: '.class'がありません Rectangle(double a, double b){ ^ ShapeCheck_Poly2.java:18: エラー: ';'がありません Rectangle(double a, double b){ ^ ShapeCheck_Poly2.java:18: エラー: ';'がありません Rectangle(double a, double b){ ^ ShapeCheck_Poly2.java:22: エラー: ';'がありません double getArea(){ ^ ShapeCheck_Poly2.java:35: エラー: <identifier>がありません Circle implements CalcArea{ ^ ShapeCheck_Poly2.java:35: エラー: <identifier>がありません Circle implements CalcArea{ ^ ShapeCheck_Poly2.java:37: エラー: '.class'がありません Circle(double r){ ^ ShapeCheck_Poly2.java:37: エラー: ';'がありません Circle(double r){ ^ ShapeCheck_Poly2.java:40: エラー: ';'がありません double getArea(){

該当のソースコード

abstract class Shape2{ abstract void info(); abstract void draw(); interface CalcArea{ double getArea(); } } class Rectangle extends Shape2{ public void info(){ System.out.println("Rectangle : 長方形"); } public void draw(){ System.out.println("□"); } Rectangle implements CalcArea{ double a; double b; Rectangle(double a, double b){ this.a = a; this.b = b; } double getArea(){ return a*b; } } } class Circle extends Shape2{ public void info(){ System.out.println("Circle : 円"); } public void draw(){ System.out.println("〇"); } Circle implements CalcArea{ double r; Circle(double r){ this.r = r; } double getArea(){ return r*r*Math.PI; } } } class Polyline extends Shape2{ public void info(){ System.out.println("Polyline : 折れ線"); } public void draw(){ System.out.println("N"); } } public class ShapeCheck_Poly2{ public static void main(String args[]){ Shape2[] shapes = new Shape2[3]; shapes[0] = new Rectangle(3,5); shapes[1] = new Circle(2); shapes[2] = new Polyline(); for(int i = 0; i<shapes.length; i++){ shapes[i].info(); shapes[i].draw(); if(shapes[i] instanceof CalcArea){ CalcArea a = (CalcArea)shapes[i]; System.out.println(a.getArea()); } else{ System.out.println("面積は求められない"); } } } }

試したこと

16行目「Rectangle implements CalcArea」を分けたり,いろいろとしてみたりしたんですが,エラーが出ます。エラーが出なかった時がありましたが,その時は面積が計算されませんでした。

エラーが出なかった時の実行画面
Rectangle : 長方形

面積は求められない
Circle : 円

面積は求められない
Polyline : 折れ線
N
面積は求められない

コメントを投稿

0 コメント