Java作业(3.30)
(1)设计一个名为Geometric的几何图形的抽象类,该类包括:
①两个名为color、filled属性分别表示图形颜色和是否填充。
②一个无参的构造方法。
③一个能创建指定颜色和填充值的构造方法。
④一个名为getArea()的抽象方法,返回图形的面积。
⑤一个名为getPerimeter()的抽象方法,返回图形的周长。
⑥一个名为toString()的方法,返回该几何图形的字符串描述。
package work; //设计一个名为Geometric的几何图形的抽象类,该类包括: //①两个名为color、filled属性分别表示图形颜色和是否填充。 // //②一个无参的构造方法。 // //③一个能创建指定颜色和填充值的构造方法。 // //④一个名为getArea()的抽象方法,返回图形的面积。 // //⑤一个名为getPerimeter()的抽象方法,返回图形的周长。 // //⑥一个名为toString()的方法,返回圆的字符串描述。 abstract class Geometric {//设计一个名为Geometric的几何图形的抽象类 private String color; private boolean filled;//两个名为color、filled属性分别表示图形颜色和是否填充 public Geometric() { System.out.println("无参的构造方法"); }//无参构造方法; public Geometric(String color, boolean filled) { this.color = color; this.filled = filled; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public boolean getFilled() { return filled; } public void setFilled(boolean filled) { this.filled = filled; } abstract double getArea();//一个名为getArea()的抽象方法,返回图形的面积。 abstract double getPerimeter();//一个名为getPerimeter()的抽象方法,返回图形的周长。 }
(2)设计一个名为Circle的圆类来实现Geometric类,该类包括:
①一个名为radius的double类型私有属性表示半径。
②一个无参构造方法创建圆。
③一个能创建指定radius的圆的构造方法。
④radius的访问器方法。
⑤一个名为getArea()的方法,返回该圆的面积。
⑥一个名为getPerimeter()的方法,返回圆的周长。
⑦一个名为toString()的方法,返回该圆的字符串描述。
package work; //设计一个名为Circle的圆类来实现Geometric类,该类包括: // //①一个名为radius的double属性表示半径。 // //②一个无参构造方法创建圆。 // //③一个能创建指定radius的圆的构造方法。 // //④radius的访问器方法。 // //⑤一个名为getArea()的方法,返回该圆的面积。 // //⑥一个名为getPerimeter()的方法,返回圆的周长。 // //⑦一个名为toString()的方法,返回该圆的字符串描述。 public class Circle extends Geometric { private double radius; public Circle() { System.out.println("圆"); } public Circle(String color, boolean filled, double radius) { super(color, filled);//调用构造方法 this.radius = radius; } public double getRadius() { return radius; } public void setRadius(double radius) { this.radius = radius; } public double getArea() { return 3.14 * radius * radius; } public double getPerimeter() { return 2 * 3.14 * radius; } public String toString() { return "圆的颜色是" + getColor() + "圆的面积是" + getArea() + "圆的周长是" + getPerimeter(); } }
(3)设计一个名为Rectangle的矩形类来实现Geometric类,该类包括:
①两个名为side1、side2的double类型私有属性表示矩形的两条边。
②一个无参构造方法创建矩形。
③一个能创建指定sidel和side2的矩形的构造方法。
④side1和side2的访问器方法。
⑤一个名为getArea()的方法,返回该矩形的面积。
⑥一个名为gelPerimeter()的方法,返回该矩形的周长。
⑦一个名为toString()的方法,返回该矩形的字符串描述。
package work; //设计一个名为Rectangle的矩形类来实现Geometric类,该类包括: // //①两个名为side1、side2的double属性表示矩形的两条边。 // //②一个无参构造方法创建矩形。 // //③一个能创建指定sidel和side2的矩形的构造方法。 // //④sidel和sidez的访问器方法。 // //⑤一个名为getArea()的方法,返回该矩形的面积。 // //⑥一个名为gelPerimeter()的方法,返回该矩形的周长。 // //⑦一个名为toString()的方法,返回该矩形的字符串描述。 public class Rectangle extends Geometric { private double side1; private double side2; public Rectangle() { System.out.println("矩形"); } public Rectangle(String color, boolean filled, double side1, double side2) { super(color, filled); this.side1 = side1; this.side2 = 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; } public double getArea() { return side1 * side2; } public double getPerimeter() { return 2 * side1 + 2 * side2; } public String toString() { return "矩形的颜色:" + getColor() + "矩形的填充:" + getFilled() + "矩形的面积:" + getArea() + "矩形的周长:" + getPerimeter(); } }
(4)设计一个名为Triangle的三角形类来实现Geometric类,该类包括:
①三个名为side1,side2和side3的double类型私有属性表示三角形的三条边。
②一个无参构造方法创建三角形。
③一个能创建指定side1,side2和side3的矩形的构造方法。
④side1,side2和side3的访问器方法。
⑤一个名为getArea()的方法,返回该三角形的面积。
⑥一个名为getPerimeter()的方法,返回该三角形的周长。
⑦一个名为isTriangle()的方法,判断三边是否能构成三角形。
⑧一个名为toString()的方法,返回三边较小的字符串描述。
package work; //设计一个名为Triangle的三角形类来实现Geometric类,该类包括: // //①三个名为side1,side2和side3的double属性表示三角形的三条边。 // //②一个无参构造方法创建三角形。 // //③一个能创建指定side1,side2和side3的矩形的构造方法。 // //④sidel,side2和side3的访问器方法。 // //⑤一个名为getArea()的方法,返回该三角形的面积。 // //⑥一个名为getPerimeter()的方法,返回该三角形的周长。 // //⑦一个名为isTriangle()的方法,判断三边是否能构成三角形。 // //⑧一个名为toString()的方法,返回三边较小的字符串描述。 public class Triangle extends Geometric { private double side1; private double side2; private double side3; public Triangle() { System.out.println("三角形"); } public Triangle(String color, boolean filled, double side1, double side2, double side3) { super(color, filled); this.side1 = side1; this.side2 = side2; this.side3 = 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; } public double getArea() { double s = side1 + side2 + side3 / 2; float S = (float) Math.sqrt(s * (s - side1) * (s - side2) * (s - side3)); return S; } public double getPerimeter() { return side1 + side2 + side3; } public boolean isTriangle(double side1, double side2, double side3) { if (side1 + side2 > side3 && side1 + side3 > side2 && side2 + side3 > side1) { return true; } else { return false; } } public String toString() { return "三角形颜色:" + getColor() + "三角形填充:" + getFilled() + "三角形面积:" + getArea() + "三角形周长:" + getPerimeter(); } public String toString(double side1, double side2, double side3) { double min; if (side1 <= side2 && side1 <= side3) { min = side1; } else if (side2 <= side1 && side2 <= side3) { min = side2; } else { min = side3; } return "三角形最小边的值:" + min; } }
(5)编写测试类,测试图形的面积和周长。
package work; public class GeometricTest { public static void main(String[] args) { Circle aa = new Circle("蓝色", true, 1); System.out.println(aa.toString()); Rectangle dd = new Rectangle("黑色", false, 6, 7); System.out.println(dd.toString()); Triangle bb = new Triangle("蓝色", true, 3, 4, 5); System.out.println(bb.toString()); Triangle cc = new Triangle("蓝色", true, 3, 4, 5);//同一个构造方法,不同的tostring System.out.println(cc.toString(cc.getSide1(), cc.getSide2(), cc.getSide3()));//第二个toString方法 } }
输出结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?