如何在Java中使用多态来制作具有不同类型的列表?

发布于 2021-01-30 17:30:14

我有3类 圆形,矩形和正方形

我想获取上述每个类所需的数据,并按用户创建它们。

这意味着 用户可以根据需要进行操作,例如3个 圆形 ,2个 矩形 和7个 正方形 。形状的数量取决于用户。

然后,我想将它们保存在 单元列表中, 并调用我的类方法,它们分别是 calculateArea
calculatePerimeter ,并使用名称显示它们的周长和面积。

我该怎么做?

这些是我的课

public class Cricle {

    private int radius;

    public Cricle(int radius) {
        this.radius = radius;
    }

    public  double calculateArea()
    {
        return (radius*radius)*Math.PI;
    }
    public double  calculatePerimeter()
    {
        return  (radius*2)*Math.PI;
    }
}

长方形

public class Rectangle {

    private int width;
    private int height;

    public Rectangle(int width, int height) {
        this.width = width;
        this.height = height;
    }
    public int calculateArea() {
        return width*height;
    }

    public int calculatePrimeter() {
        return (width+height)*2;
    }
}

广场

public class Square {
    private int edge;


    public int calculateArea() {
        return edge*edge;
    }

    public int calculatePrimeter() {
        return edge*4;
    }
}
关注者
0
被浏览
80
1 个回答
  • 面试哥
    面试哥 2021-01-30
    为面试而生,有面试问题,就找面试哥。

    您可以定义一个接口,您所有的类都将实现此接口。将所有常用方法添加到接口中。

    public interface Shapes {
       public double calculateArea();
       public double calculatePrimeter();
    }
    

    现在,您所有的形状类都将实现上述接口,并提供接口方法的实现。在您的情况下,请更改所有方法的返回类型。您可以将其保留两倍。

    public class Circle implements Shapes{
        private int radius;
    
        public Circle (int radius) {
            this.radius = radius;
        }
    
        @Override
        public double calculateArea() {
            return (radius * radius) * Math.PI;
        }
    
        @Override
        public double calculatePrimeter() {
            return (radius * 2) * Math.PI;
        }
    }
    
    public class Rectangle implements Shapes{}
    public class Square implements Shapes{}
    

    那你需要一份清单

    static List<Shapes> unitList = new ArrayList<Shapes>();
    

    从用户那里获取输入并添加到上面的列表中。然后只需循环unitList并调用相应的方法

    用于计算面积

    for (Shapes shape : unitList)
        System.out.println("Area: " + shape.calculateArea());
    

    用于计算周长

    for (Shapes shape : unitList)
        System.out.println("Perimeter: " + shape.calculatePrimeter());
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看