3.30面向对象作业
(1)设计一个名为Geometric的几何图形的抽象类,该类包括:
①两个名为color、filled属性分别表示图形颜色和是否填充。
②一个无参的构造方法。
③一个能创建指定颜色和填充值的构造方法。
④一个名为getArea()的抽象方法,返回图形的面积。
⑤一个名为getPerimeter()的抽象方法,返回图形的周长。
⑥一个名为toString()的方法,返回该几何图形的字符串描述。
(2)设计一个名为Circle的圆类来实现Geometric类,该类包括:
①一个名为radius的double类型私有属性表示半径。
②一个无参构造方法创建圆。
③一个能创建指定radius的圆的构造方法。
④radius的访问器方法。
⑤一个名为getArea()的方法,返回该圆的面积。
⑥一个名为getPerimeter()的方法,返回圆的周长。
⑦一个名为toString()的方法,返回该圆的字符串描述。
(3)设计一个名为Rectangle的矩形类来实现Geometric类,该类包括:
①两个名为side1、side2的double类型私有属性表示矩形的两条边。
②一个无参构造方法创建矩形。
③一个能创建指定sidel和side2的矩形的构造方法。
④side1和side2的访问器方法。
⑤一个名为getArea()的方法,返回该矩形的面积。
⑥一个名为gelPerimeter()的方法,返回该矩形的周长。
⑦一个名为toString()的方法,返回该矩形的字符串描述。
(4)设计一个名为Triangle的三角形类来实现Geometric类,该类包括:
①三个名为side1,side2和side3的double类型私有属性表示三角形的三条边。
②一个无参构造方法创建三角形。
③一个能创建指定side1,side2和side3的矩形的构造方法。
④side1,side2和side3的访问器方法。
⑤一个名为getArea()的方法,返回该三角形的面积。
⑥一个名为getPerimeter()的方法,返回该三角形的周长。
⑦一个名为isTriangle()的方法,判断三边是否能构成三角形。
⑧一个名为toString()的方法,返回三边较小的字符串描述。
class Triangle extends Geometric{
private double side1;
private double side2;
public double side3;
public Triangle(){
System.out.println("三角形");
}
public Triangle(double side1,double side2,double side3,String color,boolean filled){
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 this.side1+this.side2+this.side3;
}
public boolean isTriangle(double side1,double side2,double side3){
if (side1+side2>side3&&side3-side2<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)编写测试类,测试图形的面积和周长。
public class guoyuhang {
public static void main(String[] args) {
Circle aa = new Circle("蓝色",true,2);
System.out.println(aa.toString());
Rectangle bb = new Rectangle(2,3,"黑色",false);
System.out.println(bb.toString());
Triangle cc = new Triangle(3,4,5,"蓝色",true);
System.out.println(cc.toString());
Triangle dd = new Triangle(3,4,5,"蓝色",true);
System.out.println(dd.toString(dd.getSide1(), dd.getSide2(), dd.getSide3()));
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现