2017-05-17 5 views
-2

誰かが私のコーディングでこれらのエラーが発生している理由を教えてもらえますか? thearray[count++]は私にエラーを与え続けています。私はしばらくそれに固執してきた。いくつかの指針がいいだろう。ここで多形性に問題がある

は私の主な方法です。

public class Circle { 

private double radius; 

public Circle() { 
    radius = 1.0; 
}  
public Circle(double newRadius) { 

    radius = 1.0; 
    setRadius(newRadius); 
} 
public void setRadius(double newRadius) { 
    if(newRadius > 0) { 
    radius = newRadius; 

    } 
    else { 
     System.out.println("Error: " 
       + newRadius + " is a bad radius value."); 
    } 
    } 
public double getRadius() { 
    return radius; 

} 

public double getArea() { 
    return radius * radius * Math.PI; 
} 

} 

、ここでは私のShapeクラスである:ここで

public class Project5 { 



private Shape [] thearray = new Shape[100]; 

public static void main (String [] args) { 

Project5 tpo = new Project5(); 

tpo.run(); 

} 

public void run() { 

int count = 0; 

thearray[count++] = new Circle(20, 20, 40); 

thearray[count++] = new Triangle(70, 70, 20, 30); 

thearray[count++] = new Rectangle(150, 150, 40, 40); 

for (int i = 0; i < count; i ++) { 
thearray[i].display(); 
} 

int offset = 0; 

double totalarea = 0.0; 

while (thearray[offset] != null) { 

totalarea = totalarea + thearray[offset].area(); 

offset++; 

} 

System.out.println("The total area for " + offset + " Shape objects is  " + totalarea); 

} 

} 

は私Circleクラスです

abstract class Shape{ 

int x = 1; 
int y = 1; 

public int getX() { 
return x; 

} 
public void setX(int x) { 
this.x = x; 

} 

public int getY() { 
return y; 

} 
public void setY(int y) { 
this.y = y; 

} 
public Shape(int x, int y) { 
this.x = x; 
this.y = y; 
} 

public void display() { 

} 
public abstract double area(); 

} 

私は私の三角形を投稿するだろうし、四角形のクラスではありますが、これは少なくとも私がどこを乱しているかを説明するのに十分であると思いました。

+2

どのようなエラーが表示されますか? – Mark

+0

サークルを3つの引数をコンストラクタで作成していますが、Circleクラス自体でコンストラクタは1つの引数しか受け取りません – mdewit

+0

こんにちはエンリケはCircle、Rectangle、Triangleクラスで3つまたは4つの引数を受け入れるパラメータ化されたコンストラクタです。 – Pradeep

答えて

-1

サークルクラスを見て、コンストラクタは現在1つの引数しか取っていません。ただし、サークルを作成するときは、3つの引数を指定しています。

円はおそらくシェイプから拡張する必要があり、最初の2つのパラメータはシェイプのxとyの位置になります。この場合は、クラスを次のように変更してください。

public class Circle extends Shape { 

    private double radius; 

    public Circle(int x, int y) { 
     super(x, y); 
     radius = 1.0; 
    }  
    public Circle(int x, int y, double newRadius) { 
     super(x, y); 
     setRadius(newRadius); 
    } 
    ...etc 
+0

また、一度に1つのステップで問題を解決しようとします。サークルクラスを完全に動作させてから、メインプログラムに他のシェイプを追加してください。 – mdewit

+0

なぜこれを落としたのですか? – mdewit

関連する問題