(2)仿照课本中Employee和Manager类多态性的例子,写一个多态性的代码: 1)声明一个Shape对象变量shp; 2)使用一个while循环来不断接收屏幕输入: A.当输入1时,表示使用的是长方形,提示再输入长l和宽w,用shp指向(引用)长方形对象,例如:shp=new Rect(l, w);然后输出周长和面积, B.当输入是2时,表示使用长方体,提示再输入长l宽w高h,用shp指向(引用)长方体对象,然后输出周长(如果Cub类没有定义周长,那么添加计算周长的方法)和面积。 C.当输入是其他值的时候,退出程序。
时间: 2023-06-11 18:09:35 浏览: 117
以下是多态性的代码实现:
```
import java.util.Scanner;
abstract class Shape {
public abstract double getArea();
public abstract double getPerimeter();
}
class Rect extends Shape {
private double length;
private double width;
public Rect(double length, double width) {
this.length = length;
this.width = width;
}
public double getArea() {
return length * width;
}
public double getPerimeter() {
return 2 * (length + width);
}
}
class Cub extends Shape {
private double length;
private double width;
private double height;
public Cub(double length, double width, double height) {
this.length = length;
this.width = width;
this.height = height;
}
public double getArea() {
return 2 * (length * width + length * height + width * height);
}
public double getPerimeter() {
return 4 * (length + width + height);
}
}
public class Main {
public static void main(String[] args) {
Shape shp = null;
Scanner scanner = new Scanner(System.in);
int input = 0;
while (true) {
System.out.println("请输入您想要创建的对象类型:");
System.out.println("1.长方形");
System.out.println("2.长方体");
System.out.println("其他.退出");
input = scanner.nextInt();
if (input == 1) {
System.out.println("请输入长方形的长和宽:");
double length = scanner.nextDouble();
double width = scanner.nextDouble();
shp = new Rect(length, width);
System.out.println("长方形的面积为:" + shp.getArea());
System.out.println("长方形的周长为:" + shp.getPerimeter());
} else if (input == 2) {
System.out.println("请输入长方体的长、宽和高:");
double length = scanner.nextDouble();
double width = scanner.nextDouble();
double height = scanner.nextDouble();
shp = new Cub(length, width, height);
System.out.println("长方体的面积为:" + shp.getArea());
System.out.println("长方体的周长为:" + shp.getPerimeter());
} else {
break;
}
}
scanner.close();
}
}
```
在该程序中,我们定义了一个抽象类 Shape,其中包含了计算面积和周长的方法。然后我们定义了两个子类 Rect 和 Cub,它们分别代表了长方形和长方体。两个子类分别继承了 Shape 抽象类,并实现了其中的方法。
在主函数中,我们使用一个 while 循环来不断接收用户的输入。当用户输入 1 时,我们创建一个 Rect 对象,并通过 shp 引用指向它。当用户输入 2 时,我们创建一个 Cub 对象,并通过 shp 引用指向它。无论用户输入的是什么,我们都调用了 shp 的 getArea 和 getPerimeter 方法来计算面积和周长,并将它们输出到屏幕上。当用户输入的是其他值时,我们退出程序。
阅读全文