(1)设计一个名为Geometric的几何图形的抽象类,该类包括:
①两个名为color、filled属性分别表示图形颜色和是否填充。
②一个无参的构造方法。
③一个能创建指定颜色和填充值的构造方法。
④一个名为getArea()的抽象方法,返回图形的面积。
⑤一个名为getPerimeter()的抽象方法,返回图形的周长。
⑥一个名为toString()的方法,返回圆的字符串描述。
代码部分:
package com.sdbi.edu.zhaojiaao; /*(1)设计一个名为Geometric的几何图形的抽象类,该类包括: ①两个名为color、filled属性分别表示图形颜色和是否填充。 ②一个无参的构造方法。 ③一个能创建指定颜色和填充值的构造方法。 ④一个名为getArea()的抽象方法,返回图形的面积。 ⑤一个名为getPerimeter()的抽象方法,返回图形的周长。 ⑥一个名为toString()的方法,返回圆的字符串描述。 */ abstract class Geometric { //①两个名为color、filled属性分别表示图形颜色和是否填充。 String color;// 表示图形颜色 boolean filled;// 表示是否填充 //②一个无参的构造方法。 public Geometric() { } //③一个能创建指定颜色和填充值的构造方法。 public Geometric(String color, boolean filled) { this.color = color; this.filled = filled; } //④一个名为getArea()的抽象方法,返回图形的面积。 abstract double getArea(); //⑤一个名为getPerimeter()的抽象方法,返回图形的周长。 abstract double getPerimeter(); //⑥一个名为toString()的方法,返回圆的字符串描述。 @Override public String toString() { return "Geometric [color=" + color + ", filled=" + filled + ", getArea()=" + getArea() + ", getPerimeter()=" + getPerimeter() + ", getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()=" + super.toString() + "]"; } }
效果截图:
(2)设计一个名为Circle的圆类来实现Geometric类,该类包括:
①一个名为radius的double属性表示半径。
②一个无参构造方法创建圆。
③一个能创建指定radius的圆的构造方法。
④radius的访问器方法。
⑤一个名为getArea()的方法,返回该圆的面积。
⑥一个名为getPerimeter()的方法,返回圆的周长。
⑦一个名为toString()的方法,返回该圆的字符串描述。
代码部分:
package com.sdbi.edu.zhaojiaao; /*(2)设计一个名为Circle的圆类来实现Geometric类,该类包括: ①一个名为radius的double属性表示半径。 ②一个无参构造方法创建圆。 ③一个能创建指定radius的圆的构造方法。 ④radius的访问器方法。 ⑤一个名为getArea()的方法,返回该圆的面积。 ⑥一个名为getPerimeter()的方法,返回圆的周长。 ⑦一个名为toString()的方法,返回该圆的字符串描述。 */ public class Circle extends Geometric { //①一个名为radius的double属性表示半径。 double radius;// 表示半径 //②一个无参构造方法创建圆。 public Circle() { } //③一个能创建指定radius的圆的构造方法。 public Circle(double radius) { this.radius = radius; } //④radius的访问器方法。 public double getRadius() { return radius; } public void setRadius(double radius) { this.radius = radius; } //⑤一个名为getArea()的方法,返回该圆的面积。 @Override double getArea() { return radius * radius * 3.14; } //⑥一个名为getPerimeter()的方法,返回圆的周长。 @Override double getPerimeter() { return radius * 2 * 3.14; } //⑦一个名为toString()的方法,返回该圆的字符串描述。 @Override public String toString() { return "Circle [radius=" + radius + ", color=" + color + ", filled=" + filled + ", getRadius()=" + getRadius() + ", getArea()=" + getArea() + ", getPerimeter()=" + getPerimeter() + ", toString()=" + super.toString() + ", getClass()=" + getClass() + ", hashCode()=" + hashCode() + "]"; } }
效果截图:
(3)设计一个名为Rectangle的矩形类来实现Geometric类,该类包括:
①两个名为side1、side2的double属性表示矩形的两条边。
②一个无参构造方法创建矩形。
③一个能创建指定side1和side2的矩形的构造方法。
④side1和side2的访问器方法。
⑤一个名为getArea()的方法,返回该矩形的面积。
⑥一个名为gelPerimeter()的方法,返回该矩形的周长。
⑦一个名为toString()的方法,返回该矩形的字符串描述。
代码部分:
package com.sdbi.edu.zhaojiaao; /*(3)设计一个名为Rectangle的矩形类来实现Geometric类,该类包括: ①两个名为side1、side2的double属性表示矩形的两条边。 ②一个无参构造方法创建矩形。 ③一个能创建指定side1和side2的矩形的构造方法。 ④side1和side2的访问器方法。 ⑤一个名为getArea()的方法,返回该矩形的面积。 ⑥一个名为gelPerimeter()的方法,返回该矩形的周长。 ⑦一个名为toString()的方法,返回该矩形的字符串描述。 */ public class Rectangle extends Geometric { //①两个名为side1、side2的double属性表示矩形的两条边。 double side1;// 表示矩形的两条边 double side2; //②一个无参构造方法创建矩形。 public Rectangle() { } //③一个能创建指定side1和side2的矩形的构造方法。 public Rectangle(double side1, double side2) { this.side1 = side1; this.side2 = side2; } //④side1和side2的访问器方法。 public double getSide1() { return side1; } public void setSide1(double side1) { this.side1 = side1; } public double getSide2() { return side2; } public void setSide2(double side2) { this.side2 = side2; } //⑤一个名为getArea()的方法,返回该矩形的面积。 @Override double getArea() { return side1 * side2; } //⑥一个名为gelPerimeter()的方法,返回该矩形的周长。 @Override double getPerimeter() { return (side1 + side2) * 2; } //⑦一个名为toString()的方法,返回该矩形的字符串描述。 @Override public String toString() { return "Rectangle [side1=" + side1 + ", side2=" + side2 + ", color=" + color + ", filled=" + filled + ", getSide1()=" + getSide1() + ", getSide2()=" + getSide2() + ", getArea()=" + getArea() + ", getPerimeter()=" + getPerimeter() + ", toString()=" + super.toString() + ", getClass()=" + getClass() + ", hashCode()=" + hashCode() + "]"; } }
效果截图:
(4)设计一个名为Triangle的三角形类来实现Geometric类,该类包括:
①三个名为side1,side2和side3的double属性表示三角形的三条边。
②一个无参构造方法创建三角形。
③一个能创建指定side1,side2和side3的矩形的构造方法。
④side1,side2和side3的访问器方法。
⑤一个名为getArea()的方法,返回该三角形的面积。
⑥一个名为getPerimeter()的方法,返回该三角形的周长。
⑦一个名为isTriangle()的方法,判断三边是否能构成三角形。
⑧一个名为toString()的方法,返回三边较小的字符串描述。
代码部分:
package com.sdbi.edu.zhaojiaao; /*(4)设计一个名为Triangle的三角形类来实现Geometric类,该类包括: ①三个名为side1,side2和side3的double属性表示三角形的三条边。 ②一个无参构造方法创建三角形。 ③一个能创建指定side1,side2和side3的矩形的构造方法。 ④side1,side2和side3的访问器方法。 ⑤一个名为getArea()的方法,返回该三角形的面积。 ⑥一个名为getPerimeter()的方法,返回该三角形的周长。 ⑦一个名为isTriangle()的方法,判断三边是否能构成三角形。 ⑧一个名为toString()的方法,返回三边较小的字符串描述。 */ public class Triangle extends Geometric { //①三个名为side1,side2和side3的double属性表示三角形的三条边。 double side1;// 表示三角形的三条边 double side2; double side3; //②一个无参构造方法创建三角形。 public Triangle() { } //③一个能创建指定side1,side2和side3的矩形的构造方法。 public Triangle(double side1, double side2, double side3) { this.side1 = side1; this.side2 = side2; this.side3 = side3; } //④side1,side2和side3的访问器方法。 public double getSide1() { return side1; } public void setSide1(double side1) { this.side1 = side1; } public double getSide2() { return side2; } public void setSide2(double side2) { this.side2 = side2; } public double getSide3() { return side3; } public void setSide3(double side3) { this.side3 = side3; } //⑤一个名为getArea()的方法,返回该三角形的面积。 @Override double getArea() { double s = (side1 + side2 + side3) / 2; return Math.sqrt(s * (s - side1) * (s - side2) * (s - side3)); } //⑥一个名为getPerimeter()的方法,返回该三角形的周长。 @Override double getPerimeter() { return side1 + side2 + side3; } //⑦一个名为isTriangle()的方法,判断三边是否能构成三角形。 boolean isTriangle(double side1, double side2, double side3) { if ((side1 + side2) > side3 && (side1 + side3) > side2 && (side2 + side3) > side1) { return true;// 能构成三角形 } else { return false;// 不能构成三角形 } } //⑧一个名为toString()的方法,返回三边较小的字符串描述。 @Override public String toString() { // 求较小的边 // (1)利用if语句使得side1 <= side2 double temp; if (side1 >= side2) { temp = side1; side1 = side2; side2 = temp; } // (2)利用if语句使得side1 <= side3 if (side1 >= side3) { temp = side1; side1 = side3; side3 = temp; } // (3)此时side1变量里存储的数值最小,即为较小的边 return "Triangle [side1=" + side1 + "]"; } }
效果截图:
(5)编写测试类,测试图形的面积和周长。
代码部分:
package com.sdbi.edu.zhaojiaao; import java.util.Scanner; //(5)编写测试类,测试图形的面积和周长。 public class Demo { private static Scanner sc; public static void main(String[] args) { sc = new Scanner(System.in); // Circle类(圆) // 创建一个Circle类的对象(圆),并为其半径赋初始值 System.out.println("请为圆的半径赋值:"); double radius = sc.nextDouble(); Circle circle = new Circle(radius); // 测试圆的面积和周长 System.out.println("圆的面积为:" + circle.getArea()); System.out.println("圆的周长为:" + circle.getPerimeter()); // 返回该圆的字符串描述 System.out.println(circle.toString()); System.out.println("--------------------------"); // Rectangle类(矩形) // 创建一个Rectangle类的对象(矩形),并分别为其两边长赋初始值 System.out.println("请分别为矩形的两条边长赋值:"); double side1 = sc.nextDouble(); double side2 = sc.nextDouble(); Rectangle rectangle = new Rectangle(side1, side2); // 测试矩形的面积和周长 System.out.println("矩形的面积为:" + rectangle.getArea()); System.out.println("矩形的周长为:" + rectangle.getPerimeter()); // 返回该矩形的字符串描述 System.out.println(rectangle.toString()); System.out.println("--------------------------"); // Triangle类(三角形) // 创建一个Triangle类的对象(三角形),并分别为其三边长赋初始值 To: while (true) { System.out.println("请分别为三角形的三条边长赋值:"); double side01 = sc.nextDouble(); double side02 = sc.nextDouble(); double side03 = sc.nextDouble(); Triangle triangle = new Triangle(side01, side02, side03); // 判断能否构成三角形 if (triangle.isTriangle(side01, side02, side03)) { // 能构成三角形 // 测试三角形的面积和周长 System.out.println("三角形的面积为:" + triangle.getArea()); System.out.println("三角形的周长为:" + triangle.getPerimeter()); // 返回三边较小的字符串描述 System.out.println(triangle.toString()); break To; } else { // 不能构成三角形 System.out.println("不能构成三角形,请重新为其三条边长赋值"); } } } }
效果截图:
运行结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?