Java抽象类测试圆形矩形三角形面积和周长

文章展示了使用Java编程实现一个抽象类Geometric,以及其三个子类Circle(圆形)、Rectangle(矩形)和Triangle(三角形)。每个子类覆盖了抽象方法来计算面积和周长,并提供了相关属性如颜色和是否填充。此外,代码中还包括了验证三角形边长的有效性。
摘要由CSDN通过智能技术生成

目录

呈现结果

TestGeometric.java


呈现结果

 

TestGeometric.java

import java.util.Arrays;
abstract class Geometric {
    String color;
    Boolean filled;

    public Geometric() {
    }

    public Geometric(String color, Boolean filled) {
        this.color = color;
        this.filled = filled;
    }

    public abstract String getArea();         //抽象方法getArea()返回面积

    public abstract String getPerimeter();    //抽象方法getPerimeter()返回周长

    public String toString() {
        return "颜色为:"+color+"\n是否填充:"+filled;
    }

}

class Circle extends Geometric{
    private double radius;
    public Circle() {
    }
    public double getRadius() {
        return radius;
    }
    public void setRadius(double radius) {
        this.radius = radius;
    }

    public Circle(String color, Boolean filled, double radius) {
        super(color, filled);
        this.radius = radius;
    }

    public Circle(double radius) {
        this.radius = radius;
    }

    public String toString(){
        return "该圆形半径为:"+radius;
    }

    public String getArea(){
        return "\t该圆形面积为:"+radius*radius*Math.PI;
    }

    public String getPerimeter(){
        return "\t该圆形周长为:"+2*Math.PI*radius;
    }

}

class Rectangle extends Geometric{
    private double side1;    //长
    private double side2;    //宽
    public Rectangle() {
    }
    public Rectangle(String color, Boolean filled, double side1, double side2) {
        super(color, filled);
        this.side1 = side1;
        this.side2 = 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;
    }

    public String toString(){
        return "\n该矩形长为:"+side1+"\n该矩形宽为:"+side2;
    }

    public String getArea(){
        return "\t该矩形面积为:"+side1*side2;
    }

    public String getPerimeter(){
        return "\t该矩形周长为:"+2*(side1+side2);
    }

}

class Triangle extends Geometric{
    private double side1;
    private double side2;
    private double 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 Triangle() {
    }
    public Triangle(String color, Boolean filled, double side1, double side2, double side3) {
        super(color, filled);
        double[] d=new double[3];
        d[0]=side1;
        d[1]=side2;
        d[2]=side3;
        Arrays.sort(d);  //升序
        side1=d[0];  //小1
        side2=d[1];  //小2
        side3=d[2];  //大
        this.side1 = side1;
        this.side2 = side2;
        this.side3 = side3;
    }

    public String toString(){
        return "\n该三角形第一条边为:"+side1+"\n该三角形第二条边为:"+side2+"\n该三角形第三条边为:"+side3;
    }

    public boolean isTriangle(){
        // 1、三角形两条较小的边之和大于第三边。
        // 2、三角形两条较大的边之差小于第三边。
        if(side1+side2>side3&&side3-side2<side1){
            return true;
        }else{
            return false;
        }
    }

    public String getArea(){
        return "\t该三角形面积为:"+Math.sqrt(side3*side3-(side2/2)*(side2/2))*side2/2;
    }

    public String getPerimeter(){
        double Perimeter=side1+side2+side3;
        return "\t该三角形周长为:"+Perimeter;
    }


}

public class TestGeometric{
    public static void main(String[] args){
        Circle c1=new Circle();         //无参构造方法创建圆形
        Rectangle r1=new Rectangle();   //无参构造方法创建矩形
        Triangle t1=new Triangle();     //无参构造方法创建三角形
        Geometric g1=new Circle("red",true,3);
        Geometric g2=new Rectangle("red",false,3,5);
        Geometric g3=new Triangle("red",true,5,7,10);
        System.out.println(g1.toString());
        System.out.println(g1.getArea());
        System.out.println(g1.getPerimeter());

        System.out.println(g2.toString());
        System.out.println(g2.getArea());
        System.out.println(g2.getPerimeter());

        System.out.println(g3.toString());
        if (((Triangle) g3).isTriangle()==true){
            System.out.println("这三条线可以组成三角形!");

            System.out.println(g3.getArea());
            System.out.println(g3.getPerimeter());
        }else{
            System.out.println("这三条线不能组成三角形!");
        }
    }
}


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于第一个问题,计算三角形周长的代码如下: ```java public abstract class Triangle { protected double a, b, c; public Triangle(double a, double b, double c) { this.a = a; this.b = b; this.c = c; } public abstract double getPerimeter(); } public class ConcreteTriangle extends Triangle { public ConcreteTriangle(double a, double b, double c) { super(a, b, c); } @Override public double getPerimeter() { return a + b + c; } } // 使用方法 Triangle t = new ConcreteTriangle(3, 4, 5); double perimeter = t.getPerimeter(); System.out.println("三角形周长为:" + perimeter); ``` 对于第二个问题,把抽象类改为接口,可以定义一个`Shape`接口,其中包含计算面积的方法`getArea()`,然后分别实现三个形状的类,并实现`Shape`接口,代码如下: ```java public interface Shape { double getArea(); } public class Triangle implements Shape { private double a, b, c; public Triangle(double a, double b, double c) { this.a = a; this.b = b; this.c = c; } @Override public double getArea() { double p = (a + b + c) / 2; return Math.sqrt(p * (p - a) * (p - b) * (p - c)); } } public class Rectangle implements Shape { private double width, height; public Rectangle(double width, double height) { this.width = width; this.height = height; } @Override public double getArea() { return width * height; } } public class Circle implements Shape { private double radius; public Circle(double radius) { this.radius = radius; } @Override public double getArea() { return Math.PI * radius * radius; } } // 使用方法 Shape t = new Triangle(3, 4, 5); double area = t.getArea(); System.out.println("三角形面积为:" + area); Shape r = new Rectangle(3, 4); area = r.getArea(); System.out.println("长方形面积为:" + area); Shape c = new Circle(3); area = c.getArea(); System.out.println("圆形面积为:" + area); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZYT_庄彦涛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值