4

特定の形状の色を受け入れるスーパークラス Shape.Java と、さまざまなポリゴンの面積を計算するいくつかのサブクラスがあります。メイン クラスを作成し、ユーザーが計算したいさまざまなポリゴンの選択肢を出力しました。

public static void choices() {
    System.out.println("What do you want to compute?");
    System.out.println("a. Rectangle");
    System.out.println("b. Triangle");
    System.out.println("c. Trapezoid");
}

これにはスイッチケースを使用しました。

case 'a': {
    System.out.print("Enter width: ");
    double width = input.nextDouble();
    System.out.print("\nEnter height: ");
    double height = input.nextDouble();
        .....
}

問題は、ユーザーの入力を表示して面積を計算するメソッドを含むサブクラス Rectangle (スーパークラス Shape を拡張する) をどのように呼び出すかということです。これは正しいです?

Shape rec = new Rectangle();

そうである場合、コンパイルすると、「シンボル コンストラクター Rectangle が見つかりません...」というエラーが表示されます。

助けてください。

4

1 に答える 1

3

あなたはそれを正しくやっています。未定義のシンボルは、おそらく不適切なインポートまたは存在しないインポートの結果です。Rectangleがコンパイルされていないか、Rectangle に引数なしの public コンストラクターがない可能性があります。

ダイナミックディスパッチのため、

Shape rec = new Rectangle();

で定義されてから で上書きされたメソッドを呼び出す場合、インタープリタは実行時に を参照しrec、 でメソッドを呼び出します。RectangleShapeRectangle

于 2012-12-06T13:23:25.973 に答える