JAVA使用抽象类改进面向对象编程测试------JAVA

该代码示例展示了Java中如何设计一个继承体系,包括一个抽象基类`GeometricObject`和两个子类`Circle`和`MyRectangle`。`Circle`类具有半径属性并实现了计算面积和比较面积的方法。`GeoTest`类用于测试这些几何对象,比较它们的面积并打印相关信息。
摘要由CSDN通过智能技术生成
package test1;

public class Circle extends GeometricObject
{
    private double radius;
    public Circle(String color,double weight,double radius)
    {
        super(color,weight);
        this.radius = radius;
    }
    public double getRadius() {
        return radius;
    }
    public void setRadius(double radius)
    {
        this.radius = radius;
    }
    public void CircleRound()
    {
        System.out.println("圆");
    }
    @Override
    public double findArea()
    {
        return 3.14 * 3.14 * radius;
    }
    public boolean equals(Object o)
    {
        if(this == o)
        {
            return true;
        }
        if(o instanceof Circle)
        {
            Circle c = (Circle)o;
            return this.radius == c.radius;
        }
        return false;
    }
}
package test1;

public abstract class GeometricObject
{
    protected String color;
    protected double weight;
    protected GeometricObject(String color,double weight)
    {
        this.color = color;
        this.weight = weight;
    }
    public String getColor()
    {
        return color;
    }

    public void setColor(String color)
    {
        this.color = color;
    }

    public double getWeight()
    {
        return weight;
    }

    public void setWeight(double weight)
    {
        this.weight = weight;
    }
    public abstract double findArea();
}

package test1;

public class GeoTest
{
    public static void main(String[] args)
    {
        GeoTest T = new GeoTest();
        Circle c0 = new Circle("red",1.0,2.3);
        Circle c1 = new Circle("red",1.0,3.2);
        T.displayGeometricObject(c0);
        T.displayGeometricObject(c1);
        System.out.println(T.equalArea(c0,c1));
    }
    public boolean equalArea(GeometricObject g1,GeometricObject g2)
    {
        return g1.findArea() == g2.findArea();
    }
    public void displayGeometricObject(GeometricObject g)
    {
        System.out.println(g.findArea());
        if(g instanceof Circle)
        {
            Circle c = (Circle)g;
            c.CircleRound();
        }
        if(g instanceof MyRectangle)
        {
            MyRectangle r = (MyRectangle)g;
            r.Rectangle();
        }
    }
}

package test1;

public class MyRectangle extends GeometricObject
{
    private double width;
    private double height;
    public MyRectangle(String color,double height,double weight, double width) {
        super(color, weight);
        this.width = width;
        this.height = height;
    }
    public double getWidth()
    {
        return width;
    }
    public void setWidth(double width)
    {
        this.width = width;
    }
    public void Rectangle()
    {
        System.out.println("三角形");
    }
    @Override
    public double findArea()
    {
        return width * height;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值