用JAVA语言写一个程序完成下面5项内容,并写好注释 1.请构造一个抽象类Shape,拥有抽象方法计算面积方法calcSquare和计算周长方法calcCircumference 2.请完成圆形、正方形、三角形、长方形对应的类,并继承自抽象类Shape,并实现抽象方法。 3.请将各个图形必要的参数(如边长、高、半径),以构造方法的形式传入(类型为double),并且保存到相应的属性。 4.实现一个Main方法,生成类的实例并且打印出各种形状的面积和周长。要求以 Shape xxx= new Circle()这种多态的方式调用 5.请注意,正方形是长方形的子类!
时间: 2023-06-05 18:05:19 浏览: 338
解答如下:
```
// 1. 抽象类 Shape
abstract class Shape {
// 计算面积方法,抽象方法
abstract double calcSquare();
// 计算周长方法,抽象方法
abstract double calcCircumference();
}
// 2. 各个形状的类,并继承自 Shape 抽象类,并实现抽象方法
class Circle extends Shape {
// 半径
private double radius;
// 构造方法
public Circle(double radius) {
this.radius = radius;
}
// 计算面积方法
public double calcSquare() {
return Math.PI * radius * radius;
}
// 计算周长方法
public double calcCircumference() {
return 2 * Math.PI * radius;
}
}
class Square extends Rectangle {
// 边长
private double side;
// 构造方法
public Square(double side) {
super(side, side);
this.side = side;
}
}
class Triangle extends Shape {
// 底边长
private double bottom;
// 高
private double height;
// 构造方法
public Triangle(double bottom, double height) {
this.bottom = bottom;
this.height = height;
}
// 计算面积方法
public double calcSquare() {
return bottom * height / 2;
}
// 计算周长方法
public double calcCircumference() {
double side = Math.sqrt(bottom * bottom + height * height);
return bottom + 2 * side;
}
}
class Rectangle extends Shape {
// 长
private double length;
// 宽
private double width;
// 构造方法
public Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
// 计算面积方法
public double calcSquare() {
return length * width;
}
// 计算周长方法
public double calcCircumference() {
return 2 * (length + width);
}
}
// 4. 实现一个Main方法
public class Main {
public static void main(String[] args) {
// 生成类的实例并且打印出各种形状的面积和周长
Shape circle = new Circle(3);
Shape square = new Square(4);
Shape triangle = new Triangle(3, 4);
Shape rectangle = new Rectangle(2, 5);
System.out.println("Circle: ");
System.out.println("Area = " + circle.calcSquare());
System.out.println("Circumference = " + circle.calcCircumference());
System.out.println("Square: ");
System.out.println("Area = " + square.calcSquare());
System.out.println("Circumference = " + square.calcCircumference());
System.out.println("Triangle: ");
System.out.println("Area = " + triangle.calcSquare());
System.out.println("Circumference = " + triangle.calcCircumference());
System.out.println("Rectangle: ");
System.out.println("Area = " + rectangle.calcSquare());
System.out.println("Circumference = " + rectangle.calcCircumference());
}
}
// 5. 注意正方形是长方形的子类
```
注释如下:
1. 定义抽象类 Shape
- 抽象方法 calcSquare() 计算面积
- 抽象方法 calcCircumference() 计算周长
2. 定义 Circle、Square、Triangle、Rectangle 等类表示不同的形状,并继承自 Shape 抽象类,实现其抽象方法
- 具体实现方式根据各种形状的特点决定
3. 在各个形状的类中使用构造方法将必要的参数(如边长、高、半径)传入,并保存到相应的属性中
4. 在 Main 方法中生成各个形状的实例,使用多态的方式调用其 calcSquare() 和 calcCircumference() 方法,计算出面积和周长,并打印输出
5. 注意正方形是长方形的子类,故在 Square 类中只需要传入边长参数即可,而不是传入 length 和 width 参数。
阅读全文