2017-04-17 7 views
0

まずで、Javaでのオーバーロードとオーバーライド、私は何か他のことを考えていますが、ここで行くことがあり、おそらく間違ったタイトルを持ってごめんなさい。私はProcessingアプレットを使ってJavaで星とサークルを描く簡単なプログラムを持っています。私はShape型のArrayListを持っています。多型は、すべてのArrayListの

ArrayList<Shape> shapeList= new ArrayList<Shape>(); 

私はそのAスターや円かどうかを判断するためにオーバーロードを使用して、コンストラクタを通じて、様々な星と円を追加します。円については

shapeList.add(new Shape(x, y, size, colour, numPoints, pApp)); 

:STARに

shapeList.add(new Shape(x, y, size, colour, pApp)); 

それが完了すると、タスクは図形を描画し、レンダリングするためのArrayListの周りにループにあります。スタークラスとサークルクラスは、どちらもシェイプを描画する独自の描画メソッドを持っています。

for (Shape shape: shapeList) 
    { 
     shape.update(); 
     shape.draw(); 
    } 

私がいる問題は、私がスターやサークル、クラスに「フォールバック」にそれをしたいときShapeクラス内の空のドローを()をオーバーライドし、その具体的なドローを実行するのに失敗しているということです()は、オブジェクトがArrayList内のその点にある星か円かによって異なります。

ありがとうございます!

+1

しかし、あなたは、あなたがShape's ...あなたが適切なクラスからのコンストラクタを使用する必要が 'インスタンス化している' Star'または 'Circle'をインスタンス化していません。 – Zircon

+0

Starには、Polygon/Polygon2Dを追加することをお勧めします。サークルについては、Ellipse2Dを追加することをお勧めします。 – ControlAltDel

+0

@Zirconええ、それは1つの間違いでした、ありがとう! – badprogramming99

答えて

0

public class Star implements Shape { 


    public Circle(int x, int y, int size, int numPoints, Color colour, App pApp){ 
     // your code 
    } 

    @Override 
    public void draw() { 
     System.out.println("Drawing Star"); 
    } 
    @Override 
    public void update() { 
     System.out.println("Updating Star"); 
    }  

} 

はあなたのリストにそれらを追加スターを実装する実装サークル

public class Circle implements Shape { 


    public Circle(int x, int y, int size, Color colour, App pApp){ 
     // your code 
    } 

    @Override 
    public void draw() { 
     System.out.println("Drawing Circle"); 
    } 

    @Override 
    public void update() { 
     System.out.println("Updating Circle"); 
    } 
} 

をShapeインタフェース

public interface Shape { 

    // the methods circle and star need to implement 
    void update(); 
    void draw(); 
} 

を定義

shapeList.add(new Star(x, y, size, colour, numPoints, pApp)); 
shapeList.add(new Circle(x, y, size, colour, pApp)); 
shapeList.add(new Star(x, y, size, colour, numPoints, pApp)); 
shapeList.add(new Circle(x, y, size, colour, pApp)); 

for (Shape shape: shapeList) 
{ 
    shape.update(); 
    shape.draw(); 
} 
関連する問題