【多态】JAVA实现1000个图形(圆形,矩形,三角形)的面积之和

6 篇文章 0 订阅
1 篇文章 0 订阅
题目:随机生成1000个图形,包括圆形,矩形,三角形若干,要求求出这1000个图形的面积之和。
分析:创建圆形,矩形,三角形的公共父类图形(抽象类),图形类可以定义一个求面积的抽象方法,在圆形,矩形,三角形中分别实现这个方法;定义长度为1000的图形类型的数组,里面可以存入圆形,矩形,三角形,再利用多态的形式实现面积的求和
  1. 抽象父类
abstract public class Tuxing {
    abstract  public double getarea();
}

2.圆形子类

public class Yuan extends Tuxing {
    double r;

    public Yuan(double r) {
        this.r = r;
    }

    @Override
    public double getarea() {
        return Math.PI*r*r;//Math类中的静态常量
    }
}

3 矩形子类

public class Juxing extends Tuxing{
    double width,height;

    public Juxing(double width, double height) {
        this.width = width;
        this.height = height;
    }

    @Override
    public double getarea() {
        return width*height;
    }
}

4.三角形子类

public class Sanjiao extends Tuxing{
    double side,high;

    public Sanjiao(double side, double high) {
        this.side = side;
        this.high = high;
    }

    @Override
    public double getarea() {
        return 0.5*side*high;
    }
}

5.测试类

public class test {
    public static void main(String[] args) {
        Tuxing[] tuxing=new Tuxing[1000];//创建1000个图形数组
        int s;
        int countYuan=0,countJuxing=0,countSanjiao=0;
        double sum=0;
        for(int i=0;i< tuxing.length;i++){
            s= (int)(Math.random()*3)+1;//随机值在1-3之间
            switch (s){
                case 1:
                    countYuan++;
                   tuxing[i]= new Yuan((int)(Math.random()*10)+1);//随机生成图形
                    break;
                case 2:
                    countJuxing++;
                    tuxing[i]= new Juxing((int)(Math.random()*10)+1,(int)(Math.random()*10)+1);
                    break;
                case 3:
                    countSanjiao++;
                    tuxing[i]= new Sanjiao((int)(Math.random()*10)+1,(int)(Math.random()*10)+1);
                    break;
            }
        }
       for(int i=0;i< tuxing.length;i++){
           sum+=tuxing[i].getarea();//求图形面积并累加
       }
        System.out.println("生成了"+countYuan+"个圆形");
        System.out.println("生成了"+countJuxing+"个矩形");
        System.out.println("生成了"+countSanjiao+"个三角形");
        System.out.println("一千个随机图形的面积和是"+sum);
    }
}

6.运行结果
在这里插入图片描述

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值