Java多态:对象数组



我正在做一个让我卡住了几个星期的课堂作业。我想知道是否有人能说明我如何才能找到解决办法。

我正在使用三个类:三角形,圆形和矩形。一个抽象类:Shape

每个对象的构造函数:

  • 三角形:公共三角形(位置位置,字符串fillColor,字符串lineColor,双侧)
  • Circle: public Circle(Position pos, String fillColor, String lineColor,双半径)
  • 矩形:公共矩形(位置位置,字符串填充颜色,字符串lineColor,双宽,双高)

作业要求:

  1. 添加一个新的类ShapeArray。这个类也将有一个main方法,它还将提示用户输入给定的arraySize(在2到20之间),然后它将创建一个数组,该数组将包含类型为triangle,Circle和Rectangle的对象。数组的大小为arraySize。2 . .使用下列任意类型的对象随机填充此数组:三角形、圆形和矩形。每个对象的状态(例如:(位置或半径等)也是随机分配的。

我似乎无法弄清楚如何使用循环创建和填充不同对象类型(矩形,圆形和三角形)的数组,同时在构造函数级别为每个对象参数生成随机值。

我创建了一些参数,但无法为linecolor和fillColor参数创建随机字符串参数。

这是我想到的:

package homework.session10;
import java.util.*;
public class ShapeArray {
public static void main(String[] args){
System.out.println("Please pick a number between 2-20 for the array size");
Scanner keyboard = new Scanner (System.in);
int arraySize = keyboard.nextInt();
ShapeArray [] shapeArray = new ShapeArray[arraySize];
Random rnd = new Random();
int posX = rnd.nextInt(11);
int posY = rnd.nextInt(11);
double recWidth = rnd.nextDouble(11.0);
double recHeight = rnd.nextDouble(11.0);
double cirRadius = rnd.nextDouble(11.0);
double triSide = rnd.nextDouble(11.0);
String fillColorObject = keyboard.next();
String lineColorObject = keyboard.next();
Position position1 = new Position(posX,posY);

//ShapeArray
}

public void sortShape(Figure[] array1){
Arrays.sort(array1);
}
public void findShape(Figure[] array2 ){
}
}

您可以这样做。创建一个父类,其中矩形、圆形和三角形将具有共同的祖先类:

public abstract class Shape {
protected Position pos;
protected String fillColor;
protected String lineColor;
protected double side;
public Shape(Position pos, String fillColor, String lineColor, double side) 
{
this.pos = pos;
this.fillColor = fillColor;
this.lineColor = lineColor;
this.side = side;
}}

然后为每个形状创建一个单独的类,继承抽象形状类

class Rectangle extends Shape {
public Rectangle(Position pos, String fillColor, String lineColor, double side){
super(pos,fillColor,lineColor,side);
}}

(对其他形状,圆形和三角形执行其余操作)

class ShapeArray{
public static void main(String[] args){
Scanner keyboard = new Scanner(System.in);
int arraySize = keyboard.nextInt();
Shape[] shapes = new Shape[arraySize];
//your code to set random values
for(int i = 0; i< arraySize;i++){
shapes[i] = new Rectangle(new Position(1,2),"red","blue",2.0);
}
}}

部分shapes[i] = new Rectangle(new Position(1,2),"red","blue",2.0);是什么"多态性"?是指。只要这个类继承了父类(Shape),那么这个子类(Rectangle)就可以被赋值给它的父类。

相关内容

  • 没有找到相关文章

最新更新