兮 2021-11-15 09:22 采纳率: 50%
浏览 42
已结题

抽象类的概念Java类的创建

抽象类的概念:通过创建抽象类形状Shape,分别计算圆、长方形、三角形的面积和周长:Shape类中定义将来子类可能会用到的属性和三个重载的构造方法以及求周长getper()和求面积area()的抽象方法。分别创建圆、长方形、三角形继承抽象类,实现求周长和求面积的计算。在主类中分别计算圆、长方形、三角形的面积和周长。
t = (a+b+c)/2.0;
double s = Math.sqrt(t*(t-a)(t-b)(t-c));

  • 写回答

1条回答 默认 最新

  • 大鹏cool Java领域优质创作者 2021-11-16 11:32
    关注
    public abstract class Shape {
    
        protected List<Double> lengthList = new ArrayList<>();
    
        public Shape(double length) {
            lengthList.add(length);
        }
    
        public Shape(double length1, double length2) {
            lengthList.add(length1);
            lengthList.add(length2);
        }
    
        public Shape(double length1, double length2, double... more) {
            lengthList.add(length1);
            lengthList.add(length2);
            if (more != null) {
                for (double length : more) {
                    lengthList.add(length);
                }
            }
        }
    
        /**
         * 计算周长
         *
         * @return
         */
        public abstract double getper();
    
        /**
         * 计算面积
         *
         * @return
         */
        public abstract double area();
    
    
    }
    
    public class Circle extends Shape {
    
        public Circle(double radius) {
            super(radius);
        }
    
        @Override
        public double getper() {
            return 2 * Math.PI * this.lengthList.get(0);
        }
    
        @Override
        public double area() {
            return Math.PI * this.lengthList.get(0) * this.lengthList.get(0);
        }
    }
    
    public class Rectangle extends Shape {
    
        public Rectangle(double length, double width) {
            super(length, width);
        }
    
        @Override
        public double getper() {
            return (this.lengthList.get(0) + this.lengthList.get(1)) * 2;
        }
    
        @Override
        public double area() {
            return this.lengthList.get(0) * this.lengthList.get(1);
        }
    
    }
    
    public class Triangle extends Shape {
    
        public Triangle(double length1, double length2, double length3) {
            super(length1, length2, length3);
        }
    
        @Override
        public double getper() {
            return this.lengthList.get(0) + this.lengthList.get(1) + this.lengthList.get(2);
        }
    
        @Override
        public double area() {
            Double a = this.lengthList.get(0);
            Double b = this.lengthList.get(1);
            Double c = this.lengthList.get(2);
    
            double t = (a + b + c) / 2.0;
            double s = Math.sqrt(t * (t - a) * (t - b) * (t - c));
            return s;
        }
    }
    
    
    public class Main {
    
        public static void main(String[] args) {
            Circle circle = new Circle(1);
            System.out.printf("圆形周长:%s,面积:%s\n", circle.getper(), circle.area());
    
            Rectangle rectangle = new Rectangle(3, 4);
            System.out.printf("长方形周长:%s,面积:%s\n", rectangle.getper(), rectangle.area());
    
            Triangle triangle = new Triangle(3, 4, 5);
            System.out.printf("三角形周长:%s,面积:%s\n", triangle.getper(), triangle.area());
        }
    }
    

    输出如下:

    圆形周长:6.283185307179586,面积:3.141592653589793
    长方形周长:14.0,面积:12.0
    三角形周长:12.0,面积:6.0
    

    有帮助请采纳。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月24日
  • 已采纳回答 11月16日
  • 创建了问题 11月15日

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 MATLAB动图问题
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名