编程题
(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()的方法,返回该圆的字符串描述。
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类型私有属性表示矩形的两条边。
②一个无参构造方法创建矩形。
③一个能创建指定sidel和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.lei.java;
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.lei.java;
import java.util.Scanner;
//(5)编写测试类,测试图形的面积和周长。
public class TestDemo {
private static Scanner sc;
public static void main(String[] args) {// 编写测试类,测试图形的面积和周长。
System.out.println("==================三角形========================");
Triangle st = new Triangle();
st.isTriangle();
st.getArea();
st.getPerimeter();
st.toString();
System.out.println("==================圆形========================");
Circle sc = new Circle();
sc.getArea();
sc.getPerimeter();
System.out.println("==================矩形========================");
Rectangle sr = new Rectangle();
sr.getArea();
sr.getPerimeter();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码