作业3.30
(1)设计一个名为Geometric的几何图形的抽象类,该类包括:
①两个名为color、filled属性分别表示图形颜色和是否填充。
②一个无参的构造方法。
③一个能创建指定颜色和填充值的构造方法。
④一个名为getArea()的抽象方法,返回图形的面积。
⑤一个名为getPerimeter()的抽象方法,返回图形的周长。
⑥一个名为toString()的方法,返回该几何图形的字符串描述。
package com.sdbi.yangyang; public abstract class Geometric { private Color color;//表示图形颜色 private boolean filled;//表示是否填充 //无参的构造方法 public Geometric() { } public Geometric(Color color, boolean filled) { super(); this.color = color; this.filled = filled; } //返回图形面积 abstract double getArea(); //返回图形周长 abstract double getPerimeter(); //返回图形的字符串描述 @Override public String toString() { return "Geometric[color="+color+",filled="+filled +"]"; } }
(2)设计一个名为Circle的圆类来实现Geometric类,该类包括:
①一个名为radius的double类型私有属性表示半径。
②一个无参构造方法创建圆。
③一个能创建指定radius的圆的构造方法。
④radius的访问器方法。
⑤一个名为getArea()的方法,返回该圆的面积。
⑥一个名为getPerimeter()的方法,返回圆的周长。
⑦一个名为toString()的方法,返回该圆的字符串描述。
package com.sdbi.yangyang; public class Circle extends Geometric { private double radius; private static final double PI=3.14; //无参的构造方法 public Circle() { } //创建指定radius的圆的构造方法 public Circle (double radius) { super(new Color(200,200, 200),true); this.radius=radius; } //构造radius的访问器方法 public double getRadius() { return radius; } public void setRadius(double radius) { this.radius = radius; } @Override //圆的面积 double getArea() { return PI*radius*radius; } @Override //圆的周长 double getPerimeter() { return 2*PI*radius; } @Override //返回该圆的描述 public String toString() { String s=super.toString(); return s + ";Circle [radius=" + radius + ", getArea()=" + getArea() + ", getPerimeter()=" + getPerimeter() + "]"; } }
(3)设计一个名为Rectangle的矩形类来实现Geometric类,该类包括:
①两个名为side1、side2的double类型私有属性表示矩形的两条边。
②一个无参构造方法创建矩形。
③一个能创建指定sidel和side2的矩形的构造方法。
④side1和side2的访问器方法。
⑤一个名为getArea()的方法,返回该矩形的面积。
⑥一个名为gelPerimeter()的方法,返回该矩形的周长。
⑦一个名为toString()的方法,返回该矩形的字符串描述。
package com.sdbi.yangyang; public class Rectangle extends Geometric { private double side1; private double side2; public Rectangle() { } //能创建指定sidel和side2的矩形的构造方法。 public Rectangle(double side1, double side2) { super(); 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; } @Override //一个名为getArea()的方法,返回该矩形的面积。 double getArea() { return side1*side2; } @Override //一个名为gelPerimeter()的方法,返回该矩形的周长。 double getPerimeter() { return 2*side1+2*side2; } //一个名为toString()的方法,返回该矩形的字符串描述。 @Override public String toString() { return "Rectangle [side1=" + side1 + ", side2=" + side2 + ", getArea()=" + getArea() + ", getPerimeter()=" + getPerimeter() + "]"; } }
(4)设计一个名为Triangle的三角形类来实现Geometric类,该类包括:
①三个名为side1,side2和side3的double类型私有属性表示三角形的三条边。
②一个无参构造方法创建三角形。
③一个能创建指定side1,side2和side3的矩形的构造方法。
④side1,side2和side3的访问器方法。
⑤一个名为getArea()的方法,返回该三角形的面积。
⑥一个名为getPerimeter()的方法,返回该三角形的周长。
⑦一个名为isTriangle()的方法,判断三边是否能构成三角形。
⑧一个名为toString()的方法,返回三边较小的字符串描述。
package com.sdbi.yangyang; import java.util.Scanner; import org.omg.CosNaming.IstringHelper; public class Triangle extends Geometric{ //三个名为side1,side2和side3的double类型私有属性表示三角形的三条边 private double side1; private double side2; private double side3; //一个无参构造方法创建三角形。 public Triangle() { } //一个能创建指定side1,side2和side3的矩形的构造方法。 public Triangle(double side1, double side2, double side3) { super(); 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; } @Override //一个名为getArea()的方法,返回该三角形的面积。 double getArea() { double p=(side1+side2+side3)/2; return Math.sqrt(p*(p-side1)*(p-side2)*(p-side3)); } @Override //一个名为getPerimeter()的方法,返回该三角形的周长。 double getPerimeter() { return side1+side2+side3; } public void isTriangle() { System.out.println("请输入三条边长:"); Scanner input=new Scanner(System.in); side1=input.nextDouble(); side2=input.nextDouble(); side3=input.nextDouble(); if(side1+side2>side3&&side1+side3>side2&&side2+side3>side1) { System.out.println("能构成三角形"); }else { System.out.println("不能构成三角形"); } //一个名为toString()的方法,返回三边较小的字符串描述。 } @Override public String toString() { double min=side1; if (side2<min){ min=side2; } if(side3<min){ min=side3; } System.out.println("最短边为:"+min); return "Triangle [side1=" + side1 + ", side2=" + side2 + ",side3=" + side3 + ", getArea()=" + getArea() + ", getPerimeter()=" + getPerimeter() + "]"; } }
(5)编写测试类,测试图形的面积和周长。
package com.sdbi.yangyang; public class GeometricTest { public static void main(String[] args) { //测试写的类 //创建一个圆的实例 Circle c1=new Circle( 2.3 ); System.out.println( c1.toString() ); Circle c2=new Circle( 5 ); System.out.println( c2.toString() ); //试着用父类--抽象类 System.out.println("--------------------------------------------------------------"); Rectangle r1=new Rectangle( 6,5 ); System.out.println( r1.toString() ); Rectangle r2=new Rectangle( 3,2 ); System.out.println( r2.toString() ); System.out.println("--------------------------------------------------------------"); Triangle t1=new Triangle(2,3,4); System.out.println(t1.toString()); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~