假设我们需要管理屏幕上的若干图形。 这些图形有:圆形,矩形,三角形等等。 我们可能会求所有图形的总面积。 也可能把所有图形都放大(或缩小)某个比例系数。 试采用多态的思想写出这样的应用。 提示: 1.定义图形接口Shape(接口中写两个方法:(1)求面积,(2)改变大小) 2.写三个图形的实现类Tringle,Cirle,Rectangle,分别实现图形接口Shape. 3.在main方法中,定义三个Shape 对象,分别用其实现类的对象去初始化,然后调用求面积和改变大小的方法(体现多态)。
时间: 2024-02-29 13:51:19 浏览: 21
好的,我可以帮你解答这个问题。下面是示例代码:
```java
interface Shape {
double getArea(); // 求面积
void resize(double ratio); // 改变大小
}
class Triangle implements Shape {
private double base;
private double height;
public Triangle(double base, double height) {
this.base = base;
this.height = height;
}
public double getArea() {
return base * height / 2;
}
public void resize(double ratio) {
base *= ratio;
height *= ratio;
}
}
class Circle implements Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
public double getArea() {
return Math.PI * radius * radius;
}
public void resize(double ratio) {
radius *= ratio;
}
}
class Rectangle implements Shape {
private double width;
private double height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
public double getArea() {
return width * height;
}
public void resize(double ratio) {
width *= ratio;
height *= ratio;
}
}
public class Main {
public static void main(String[] args) {
Shape s1 = new Triangle(3, 4);
Shape s2 = new Circle(2);
Shape s3 = new Rectangle(5, 6);
System.out.println("面积:");
System.out.println(s1.getArea());
System.out.println(s2.getArea());
System.out.println(s3.getArea());
System.out.println("改变大小:");
s1.resize(2);
s2.resize(1.5);
s3.resize(0.5);
System.out.println(s1.getArea());
System.out.println(s2.getArea());
System.out.println(s3.getArea());
}
}
```
在上面的代码中,我们定义了一个Shape接口,其中有两个方法:getArea()用于求面积,resize()用于改变大小。然后我们定义了三个实现了Shape接口的类:Triangle、Circle、Rectangle,分别实现了求面积和改变大小的方法。在Main方法中,我们定义了三个Shape对象s1、s2、s3,分别用实现类的对象去初始化。然后我们分别调用了它们的求面积和改变大小的方法,体现了多态的思想。