我有一个超类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 ...'
请帮忙。
答案 0 :(得分:3)
你正确地做到了。您的未定义符号可能是导入错误或不存在的结果;也许Rectangle
没有编译,或者你在Rectangle上没有公共的无参数构造函数。
由于动态调度,当您执行
时 Shape rec = new Rectangle();
解释器在运行时将查看rec
,并在Rectangle
上调用方法,如果您正在调用Shape
上定义的方法,然后在{{1}上覆盖该方法1}}。