在Java中,泛型:定义一个形状类Shape,提供计算周长getPerimeter()和面秋getArea()的函数 定义一个子类正方形类Square继承自Shape类,拥有边长属性,提供构造函数,能够计算周 长getPerimeter()和面秋getArea()。 定义一个子类长方形类Rectangle继承自Square类,拥有长、宽属性,提供构造函数,能够计 算周长getPerimeter()和面积getArea()。 定义一个子类图形类Circle继承自Shape,拥有半径属性,提供构造函数, imeter()和面积getArea()。 设计一个show函数,对Shape类的变量,输出周长、面积。
时间: 2023-06-23 15:08:50 浏览: 203
可以使用Java中的泛型来实现这个需求,具体代码如下:
```java
public class Shape<T> {
public T getPerimeter() {
return null;
}
public T getArea() {
return null;
}
public void show() {
System.out.println("Perimeter: " + getPerimeter());
System.out.println("Area: " + getArea());
}
}
public class Square extends Shape<Integer> {
private int side;
public Square(int side) {
this.side = side;
}
@Override
public Integer getPerimeter() {
return 4 * side;
}
@Override
public Integer getArea() {
return side * side;
}
}
public class Rectangle extends Square {
private int width;
public Rectangle(int side, int width) {
super(side);
this.width = width;
}
@Override
public Integer getPerimeter() {
return 2 * (side + width);
}
@Override
public Integer getArea() {
return side * width;
}
}
public class Circle extends Shape<Double> {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public Double getPerimeter() {
return 2 * Math.PI * radius;
}
@Override
public Double getArea() {
return Math.PI * radius * radius;
}
}
```
可以看到,我们使用泛型来定义Shape类中的周长和面积的返回类型,这样在子类中具体实现时可以根据需要来确定返回类型。同时,在show方法中,我们也使用泛型来输出周长和面积的值。
在Square类和Rectangle类中,我们重写了getPerimeter和getArea方法,根据正方形和长方形的特点,分别实现了计算周长和面积的方法。
在Circle类中,同样重写了getPerimeter和getArea方法,计算圆的周长和面积。
最后,在Shape类中,我们定义了一个show方法,用于输出周长和面积的值。在这个方法中,我们调用了getPerimeter和getArea方法,输出计算得到的周长和面积的值。
阅读全文