在Java多态中调用子类

时间:2012-12-06 13:21:18

标签: 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.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 ...'

请帮忙。

1 个答案:

答案 0 :(得分:3)

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

由于动态调度,当您执行

Shape rec = new Rectangle();

解释器在运行时将查看rec,并在Rectangle上调用方法,如果您正在调用Shape上定义的方法,然后在{{1}上覆盖该方法1}}。