在Java多态性中调用子类

在Java多态性中调用子类,java,polymorphism,Java,Polymorphism,我有一个接受特定形状颜色的超类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.ou

我有一个接受特定形状颜色的超类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();
        .....
}
问题是,我该如何调用我的子类矩形(它扩展了超类形状),其中包含显示用户输入并计算面积的方法?这是正确的吗

Shape rec = new Rectangle();
如果是,当我编译它时,我会得到一个错误“找不到符号构造函数矩形…”


请帮忙。

你做得对。您未定义的符号可能是错误或不存在导入的结果;可能
Rectangle
未编译,或者您在Rectangle上没有公共的无参数构造函数

由于动态调度,当您

Shape rec=新矩形()


在运行时,解释器将查看
rec
,并调用
Rectangle
上的方法,如果您调用的方法是在
Shape
上定义的,然后在
Rectangle
上覆盖的,那么您的
Rectangle
构造函数是否期望宽度和高度作为参数?