如何在Java中使用多态来制作具有不同类型的列表?
我有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;
}
}
-
您可以定义一个接口,您所有的类都将实现此接口。将所有常用方法添加到接口中。
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());