Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我需要数组在main或test方法中输出,并在循环调用中实现多态性方法_Java_Arrays_Polymorphism - Fatal编程技术网

Java 我需要数组在main或test方法中输出,并在循环调用中实现多态性方法

Java 我需要数组在main或test方法中输出,并在循环调用中实现多态性方法,java,arrays,polymorphism,Java,Arrays,Polymorphism,除了我注释掉的以外,我不能输出我的形状。我试图找到一种方法,在我的形状或测试形状类中输出它。我需要调用for循环并输出一些多态性方法。我会需要接球手和接球手吗 公共类形状{ public static void main(String[] args) { Shapes [ ] Array = { new Triangle ( " ", " ", " "), new Rectangle ( " ", " ", " "), new Sq

除了我注释掉的以外,我不能输出我的形状。我试图找到一种方法,在我的形状或测试形状类中输出它。我需要调用for循环并输出一些多态性方法。我会需要接球手和接球手吗

公共类形状{

public static void main(String[] args) {

    Shapes [ ] Array = {
         new Triangle ( " ", " ", " "),
         new Rectangle ( " ", " ", " "),
         new Square ( " ", " ", " "), 
         new Ellipse ( " ", " ", " "),
         new Circle ( " ", " ", " ")};

    }


public void TestShapes ( ) {

    }
 }
public class Rectangle extends Shapes  {
 private String draw;
 private String erase;
 private String move;

public Rectangle ( ) {

    draw = " ";
    erase = " ";
    move = " ";
    System.out.println( " Default constructor" );

}

public Rectangle (String draw, String erase, String move ) {

    draw = " Rectangle - draw method\n";
    erase = " Rectangle - erase method\n";
    move = " Rectangle - move method\n";
    //System.out.println( draw + erase + move );

 }

}
public class Square extends Rectangle   {

  private String draw;
  private String erase;
  private String move;

public Square ( ) {

    draw = " ";
    erase = " ";
    move = " ";
    System.out.println( " Default constructor" );

}

public Square (String draw, String erase, String move ) {

    draw = " Square - draw method \n";
    erase = " Square - erase method  \n";
    move = " Square - move method\n";

   // System.out.println( draw + erase + move );
}


}
public class Ellipse extends Shapes    {

  private String draw;
  private String erase;
  private String move;

 public Ellipse ( ) {

    draw = " ";
    erase = " ";
    move = " ";
    System.out.println( " Default constructor" );
 }

 public Ellipse (String draw, String erase, String move ) {

    draw = "ellipse - draw method \n ";
    erase = "ellipse - erase method \n";
    move = "ellipse - move method \n";
   // System.out.println( draw + erase + move);

}

}
public class Circle extends Ellipse     {

  private String draw;
  private String erase;
  private String move;

public Circle ( ) {

    draw = " ";
    erase = " ";
    move = " ";
    System.out.println( "Default constructor " );
}

public Circle (String draw, String erase, String move) {

    draw = "Circle - draw method \n";
    erase = "Circle - erase method \n";
    move = "Circle - move method \n";
    //System.out.println( draw + erase + move );

}

} 
public class Triangle extends Shapes    {

  private String draw;
  private String erase;
  private String move;

public Triangle ( ) {

    draw = " ";
    erase = " ";
    move = " ";
    System.out.println( "Default constructor " );

}

public Triangle (String draw, String erase, String move ) {

    draw = " Triangle - draw method \n";
    erase = " Triangle - erase method \n";
    move = " Triangle -  move method \n";
   // System.out.println( draw + erase + move);

  }

}

第一种方法 每个类都有对象作为超类。因此,可以重写toString() 应该在要创建的所有不同形状中重写toString()方法

 public String toString()
{
   String s = "";
   s+= "draw " + this.draw;
   s+= "erase" + this.erase;
   s+= "move" + this.move;
   return s;
}   
然后通过调用打印(这将根据Square类中重写的toString()方法打印信息)


您应该创建一个Shapes类并进行抽象,然后在名为Shape的超类中拥有所有形状所需的所有方法,然后当您创建一个类(如Square或rectangle)时,它可以扩展形状,但不必是抽象的。但是编译器会让您实现在s中拥有的所有方法Super类。

我一直在使用toString,并希望以不同的方式处理它。我已经看到了几种方法,可以使用循环结构,通过调用所有方法来演示多态性。如果它们都具有相同的构造函数,Super似乎没有用。我可以使用它吗(I=0;IPolymorphism通过调用toString或getProperties方法来演示,因为您将有不同的实现。是的,我希望直接在我的主方法中打印。
 public void TestShapes (Shapes[] Array ) {
     for(int x =0; x<Array.length;x++)//iterates through array
       {
             System.out.println(Array[x].toString());
       }
    }
 }
public void TestShapes (Shapes[] Array ) {
     for(int x =0; x<Array.length;x++)//iterates through array
       {
            System.out.println(Array[x].getProperties()); // if it returns a string
            Array[x].getProperties(); //if it goes directly to console
       }
    }
 }
 public void getProperties()
 {
    System.out.println("varProp");
    System.out.println("varProp");
    System.out.println("varProp");
 }