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 上没有公共的无参数构造函数。

由于动态调度,当你这样做时

Shape rec = new Rectangle();

解释器在运行时会查看rec并调用 on 的方法Rectangle,如果您调用的是在 上定义Shape然后在 上覆盖的方法Rectangle

于 2012-12-06T13:23:25.973 回答