電子書籍の厳選無料作品が豊富!

以下のプログラムで下記にのせる実行結果の様に動くソースコードの元を載せています。

以下のソースコードを拡張させて、プログラムを動く様にしたいのですが、kadai12の部分のインスタンス生成の部分が、型 インスタンスが生成できませんというエラーが出てしまいます。
どの様にして、解決すれば良いでしょうか?

//kadai12パッケージ:Kadai12.java

//修正可能箇所ここから

//修正可能箇所ここまで
//以下、Kadai12クラスは修正しないこと
public class Kadai12 {
public static void main(String[] args) {
Polygon[] p = new Polygon[3];
p[0] = new Triangle(10);
p[1] = new Triangle(7);
p[2] = new Triangle(5);

for(int i=0;i<3;i++) {
p[i].showAll();
}
}
}



//ruleパッケージ:Calculation.java

//修正禁止
package rule;

public interface Calculation {
void calcArea();
void calcPerimeter();
}



//shapeパッケージ:Polygon.java

//修正禁止
package shape;

public abstract class Polygon {
private int line;

public Polygon() {
System.out.println("図形を生成します");
}

public Polygon(int line) {
this();
this.setLine(line);
}

public int getLine() {
return line;
}

public void setLine(int line) {
if(0<line && line<=10) this.line = line;
else this.line = 5;
}

public void showAll() {
System.out.println("指定された図形の面積、外周、描写を行います");
}

public abstract void drow();

}


//shapeパッケージ:Triangle.java

//修正自由
public class Triangle{

}

「抽象クラスのインスタンス生成について」の質問画像

質問者からの補足コメント

  • 一様、プログラムが動くように、importしたり、また、Triangleのプログラムで引数に合うようにインスタンスを作ったりしたのですが、Kadai12を実行したら型 Triangleのインスタンスが生成できないというエラーが出ました。

      補足日時:2020/07/08 02:31
  • Kadai12は以下の様に修正しています。

    package Kadai12;
    import shape.Polygon;
    import shape.Triangle;

    public class Kadai12 {
    public static void main(String[] args) {
    Polygon[] p = new Polygon[3];
    p[0] = new Triangle(10);
    p[1] = new Triangle(7);
    p[2] = new Triangle(5);

    for(int i=0;i<3;i++) {
    p[i].showAll();
    }
    }
    }

      補足日時:2020/07/08 10:56
  • Triangkeのプログラムに関しては以下の様に修正しています。
    Triangleに関しては以下の様に修正しています。
    package shape;

    import rule.Calculation;
    import shape.Polygon;

    public abstract class Triangle extends Polygon implements Calculation{

    public Triangle(int i) {

    }
    }

      補足日時:2020/07/08 10:58
  • Polygonを継承する際に、abstractにしないとエラーが出たため、abstract型にしました

      補足日時:2020/07/08 14:27

A 回答 (5件)

>Polygonを継承する際に、abstractにしないとエラーが出たため、


>abstract型にしました

それは実装してないメソッドが残ってるから。
全部実装して具象クラスにしないと使えないです。
    • good
    • 0

何故Triangleも抽象クラスにしたんでしょう?


抽象クラスはインスタンスを作れませんよ?
    • good
    • 0

これは酷いね。


①TriangleはなんでPolygonを継承しないの?
②Triangleの、辺の長さを指定するコンストラクタはなんで無いの?
③CalculationはTriangleで実装しないの?

②がTriangleのインスタンスの生成を出来なくしてるし
①はTriangleのインスタンスの配列への代入を出来なくしてます。
    • good
    • 0

どのようなプログラムを作ってどのような操作をしてどのようなエラーが出たのか,


一切の変更を加えないで全てそのまま
見せてください.
    • good
    • 0

いちおうかくにんなんだけど, それはエラーメッセージを*正確に*表したものですか?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!