weixin_57229078 2021-07-01 22:00 采纳率: 0%
浏览 228

java编程图形抽象类设计

问题描述
定义一个图形抽象类Shape,从抽象层面描述通用的图形操作,包括计算并返回当前图形的面积和周长两项(定义为抽象方法)。然后定义其子类Rectangle、Triangle、Circle分别描述矩形、三角形、圆形等三种不同形状,并添加必要的属性和方法、分别重写其从父类中继承的面积及周长计算方法。最后编写Java应用程序测试前述定义的图形类及其相关功能。
说明与提示
已知三条边长的情况下,可使用海伦公式计算三角形面积:
   

其中:a、b、c为三角形的三条边长;p为三角形的半周长,即p=(a+b+c)/2;S为三角形的面积。

算数开平方运算可调用JDK系统类Math的静态方法sqrt,其中还定义了圆周率常量PI,详情请自行查阅JDK API文档。

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2021-07-01 22:16
    关注
    package javastudent423;
    abstract class Shape_basic{
        public abstract void perimeter();//周长
        public abstract void area();//面积
    }
    class Circle_basic extends Shape_basic{
        public double r;
        @Override
        public void perimeter() {
            System.out.println("圆形的周长为:"+4*3.14*r);
        }
        @Override
        public void area() {
            System.out.println("圆形的面积为:"+r*3.14*r);
        }
    }
    class Triangle_basic extends Shape_basic{
        public double length1,length2,length3,length;
        @Override
        public void perimeter() {
            length = length1+length2+length3;
            System.out.println("三角形的周长为:"+length);
        }
        @Override
        public void area() {
        double d = (length1+length2+length3)/2;
        System.out.println("三角形的面积为:"+Math.sqrt(d*(d-length1)*(d-length2)*(d-length3)));
        }
    }
     class Rect_basic extends Shape_basic{
        public double r_long,r_wider;
        @Override
        public void perimeter() {
            System.out.println("矩形的周长为:"+2*(r_long+r_wider));
        }
        @Override
        public void area() {
            System.out.println("矩形的面积为:"+r_long*r_wider);
        }    
    }
    public class Shape{
        public static void main(String[] arge) {
            Circle_basic c1 = new Circle_basic();
            c1.r = 3;
            System.out.println("圆形的半径为:"+c1.r);
            c1.area();
            c1.perimeter();
            Triangle_basic t1 = new Triangle_basic();
            t1.length1 = 3;
            t1.length2 = 4;
            t1.length3 = 5;
            System.out.println("三角形的三边长分别为:"+t1.length1+","+t1.length2+","+t1.length3);
            t1.area();
            t1.perimeter();
            Rect_basic r1 = new Rect_basic();
            r1.r_long = 4;
            r1.r_wider = 3;
            System.out.println("矩形的长宽分别为:"+r1.r_long+","+r1.r_wider);
            r1.area();
            r1.perimeter();
        }
    }
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?