自定义一个Shape类(形状),封装必要的属性和方法。自定义Rectangle(矩形类),Square类(正方形类)。根据继承的原则,Rectangle类可设为Shape类的子类,Square类为Rectangle类的子类。试编程实现各形状的面积,要求子类和父类采用构造器初始化属性值。
时间: 2024-03-02 21:51:06 浏览: 157
下面是一个可能的实现:
```java
// Shape类
public class Shape {
protected double area; // 面积
public Shape() {}
public double getArea() {
return area;
}
}
// Rectangle类
public class Rectangle extends Shape {
protected double width; // 宽
protected double height; // 高
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
area = width * height;
}
public double getWidth() {
return width;
}
public double getHeight() {
return height;
}
}
// Square类
public class Square extends Rectangle {
public Square(double side) {
super(side, side);
}
}
// 测试代码
public class Test {
public static void main(String[] args) {
Rectangle rect = new Rectangle(2, 3);
Square square = new Square(2);
System.out.println("Rectangle area: " + rect.getArea()); // 输出6.0
System.out.println("Square area: " + square.getArea()); // 输出4.0
}
}
```
在这个实现中,Shape类是一个抽象的形状类,封装了一个面积属性和一个获取面积的方法。Rectangle类继承了Shape类,添加了宽和高属性,并在构造函数中计算面积。Square类继承了Rectangle类,因为正方形也是矩形的一种特殊情况,所以只需要传入一个边长即可初始化宽和高。测试代码中创建了一个Rectangle和一个Square对象并分别输出它们的面积。
阅读全文
相关推荐

















