2016-05-01 7 views
-1

zu implementieren Ich kann meine Formen außer dem, was ich auskommentiert, nicht ausgeben. Ich versuche, einen Weg zu finden, es in meinen Shapes oder Test Shapes Klassen auszugeben. Ich muss eine for-Schleife aufrufen und einige Polymorphie-Methoden ausgeben. Brauche ich Getter und Setter dafür?Ich brauche mein Array in meiner Haupt- oder Testmethode auszugeben und Polymorphismus-Methoden in einem Loop-Aufruf

public class Formen {

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); 

    } 

} 

Antwort

0

Erste Weise zu tun, es Jede Klasse Objekt als übergeordnete Klasse hat. So kann die toString() überschrieben werden Sie sollten die toString() -Methode in allen verschiedenen Formen, die Sie erstellen möchten, überschreiben.

public String toString() 
{ 
    String s = ""; 
    s+= "draw " + this.draw; 
    s+= "erase" + this.erase; 
    s+= "move" + this.move; 
    return s; 
} 

Dann drucken Sie telefonisch unter (Dies wird die Informationen auf der Grundlage der überschriebenen Methode toString() in der Klasse Square drucken)

public void TestShapes (Shapes[] Array) { 
    for(int x =0; x<Array.length;x++)//iterates through array 
     { 
      System.out.println(Array[x].toString()); 
     } 
    } 
} 

Ein weiteres Problem, das Sie haben werden sollte, ist, dass Formen nicht durch zugegriffen werden die Methode. Daher sollten Sie ein Shapes Array in den Parameter hinzufügen, wie ich oben

tat

Second Way es Egal zu tun, was man einen String drucken suchen. Somit ist ein Verfahren, das den gleichen Namen, aber unterschiedliche Implementierung hat muss einen String oder Druck zurückkehren direkt an die Konsole

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 
     } 
    } 
} 

2. Art und Weise Teil2:

public void getProperties() 
{ 
    System.out.println("varProp"); 
    System.out.println("varProp"); 
    System.out.println("varProp"); 
} 
+0

Ich habe toString verwendet und möchte es anders angehen. Ich habe mehrere Möglichkeiten gesehen, eine Schleifenstruktur zu verwenden, die Polymorphie durch Aufrufen aller Methoden demonstriert. – sjames14

+0

Super scheint nutzlos, wenn sie alle die gleichen Konstruktoren haben. Kann ich for (I = 0; I sjames14

+0

Der Polymorphismus wird demonstriert, indem man die toString- oder getProperties-Methoden aufruft, wie es bei anderen Implementierungen der Fall wäre. – DarkV1

0

Sie sollten eine Shapes Klasse und machen abstrakt und Dann haben Sie alle Methoden, die Sie für alle Ihre Formen in Ihrer Superklasse namens Shape benötigen, und dann, wenn Sie eine Klasse wie Square oder Rechteck erstellen, kann sie Shape erweitern, muss aber nicht abstrakt sein. Aber der Compiler wird Sie dazu bringen, alle Methoden zu implementieren, die Sie in Ihrer Superklasse hatten.