如何在java中使用多态性生成不同类型的列表?
我有三节课 圆、矩形和正方形 我想获得上述每个类所需的数据,并由用户创建它们 这意味着用户可以 想要什么,例如3个圆、2个矩形和7个正方形。 形状的数量取决于用户 然后我想将它们保存在一个单位列表中,并调用我的类方法,它们是calculateArea和calculatePerimeter,并用它们的名称显示它们的周长和面积 我怎么做 这些是我的课 圈 长方形 方格如何在java中使用多态性生成不同类型的列表?,java,list,class,oop,polymorphism,Java,List,Class,Oop,Polymorphism,我有三节课 圆、矩形和正方形 我想获得上述每个类所需的数据,并由用户创建它们 这意味着用户可以 想要什么,例如3个圆、2个矩形和7个正方形。 形状的数量取决于用户 然后我想将它们保存在一个单位列表中,并调用我的类方法,它们是calculateArea和calculatePerimeter,并用它们的名称显示它们的周长和面积 我怎么做 这些是我的课 圈 长方形 方格 创建一个接口,让我们调用TwoDimensionalShape并将常用方法放入其中 public interface TwoDime
创建一个接口,让我们调用TwoDimensionalShape并将常用方法放入其中
public interface TwoDimensionalShape {
double calculateArea();
int calculatePrimeter();
}
所有类都实现了这个接口
然后创建一个列表,并将所有这些形状都放在此列表中。像
List<TwoDimensionalShape> shapes= new ArrayList<TwoDimensionalShape>();
shapes.add(new Circle(5));
shapes.add(new Rectangle(4,3));
shapes.add(new Square(4));
for (TwoDimensionalShape shape : shapes) {
System.out.println("Area = " + shape.calculateArea());
System.out.println("Perimeter = " + shape.calculatePrimeter());
}
创建一个接口,让我们调用TwoDimensionalShape并将常用方法放入其中
public interface TwoDimensionalShape {
double calculateArea();
int calculatePrimeter();
}
所有类都实现了这个接口
然后创建一个列表,并将所有这些形状都放在此列表中。像
List<TwoDimensionalShape> shapes= new ArrayList<TwoDimensionalShape>();
shapes.add(new Circle(5));
shapes.add(new Rectangle(4,3));
shapes.add(new Square(4));
for (TwoDimensionalShape shape : shapes) {
System.out.println("Area = " + shape.calculateArea());
System.out.println("Perimeter = " + shape.calculatePrimeter());
}
您可以使用继承的概念来实现这一点。例如,创建一个形状类,然后使其他类继承:
public abstract class Shape {
public int calculateArea();
}
public class Circle extends Shape {}
public class Square extends Shape {}
public class Rectangle extends Shape {}
然后,您可以使用形状列表。您可以使用继承的概念来实现这一点。例如,创建一个形状类,然后使其他类继承:
public abstract class Shape {
public int calculateArea();
}
public class Circle extends Shape {}
public class Square extends Shape {}
public class Rectangle extends Shape {}
然后,您可以使用形状列表。为例如形状创建一个界面 公共界面形状{ 国际计算协会; int计算器; } 在所有三个类中实现此接口。 单元列表将是一个列表,然后您可以调用calculateArea
和CalculateMeter方法,同时迭代列表为例如Shape创建一个接口 公共界面形状{ 国际计算协会; int计算器; } 在所有三个类中实现此接口。 单元列表将是一个列表,然后您可以调用calculateArea
和CalculateMeter方法在列表上迭代时,您可以定义一个接口,并且您的所有类都将实现该接口。 将所有常用方法添加到接口中
public interface Shapes {
public double calculateArea();
public double calculatePrimeter();
}
现在,所有shape类都将实现上述接口,并提供接口方法的实现。在您的情况下,更改所有方法的返回类型。你可以把它加倍
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>();
用于计算周长
for (Shapes shape : unitList)
System.out.println("Perimeter: " + shape.calculatePrimeter());
您可以定义一个接口,并且您的所有类都将实现该接口。 将所有常用方法添加到接口中
public interface Shapes {
public double calculateArea();
public double calculatePrimeter();
}
现在,所有shape类都将实现上述接口,并提供接口方法的实现。在您的情况下,更改所有方法的返回类型。你可以把它加倍
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>();
用于计算周长
for (Shapes shape : unitList)
System.out.println("Perimeter: " + shape.calculatePrimeter());
如果您想正式了解多态性在java中的工作方式,可以参考Oracle java教程,其中解释了给定类的变量可以保存其任何子类的值,并且在超类变量上调用的方法将使用子类中的实现(如果存在) 要根据您的问题定制本教程中的信息,请执行以下操作:
列表可以被视为变量的集合,前面的答案中描述的形状列表可以包含形状的任何子类的实例,即正方形、矩形或圆形。调用列表元素上的calculateArea和CalculateMeter方法将调用该形状的相应方法。如果您想了解java中多态性的工作原理,可以参考Oracle java教程,其中解释了给定类的变量可以保存其任何子类的值,如果存在超类变量,调用超类变量的方法将使用子类中的实现 要根据您的问题定制本教程中的信息,请执行以下操作:
列表可以被视为变量的集合,前面的答案中描述的形状列表可以包含形状的任何子类的实例,即正方形、矩形或圆形。调用列表元素上的calculateArea和CalculateMeter方法将调用该形状的相应方法。让所有类实现特定接口,例如shape,然后拥有一个形状列表这是java书籍中接口/继承的最基本示例。让所有类实现特定接口,例如shape,然后列出形状这是java书籍中最基本的接口/继承示例。与抽象类相比,更喜欢接口。@Kartik,为什么更喜欢接口???@Dred Google我在上面写的句子。它将向您介绍Joshua Bloch的高效Java。比起抽象类,更喜欢接口。@Kartik,为什么更喜欢接口???@Dred Google我在上面写的句子。它将向您介绍Joshua Bloch的高效Java。