2017-10-17 10 views
0

こんにちは私はここでどこに行けば私の問題を解決するのか分かりません!!! それは言われています: 方法はSet型で(Figura2D)を追加引数には適用されません(Rettangolo) 私はこれを行うにしてみてください。タイプのメソッドadd(Figura2D)は、引数(Rettangolo)には適用されません

package packAppello170919; 
public class Figura2D { 
    private Object obj; 

    public Figura2D(){} 
    public Figura2D(Object figura){ 
     if(figura instanceof Rettangolo){ 
      obj= (Rettangolo)figura; 
     }//I do the same thing with another type of object(Cerchio) 
    }}} 

Figura2DがCerchioとRettangoloが含まれている必要がありますが、私はしないでくださいこれを行う方法を知っている、私は明らかにメインで変更することができますが、これは演習のテストであるので、私はそれを行うことはできません 私はあなたがテストすることができるようにコードの部分を入れます。 は

public static Set<Figura2D> generaSetFigure() { 
      Set<Figura2D> F = new HashSet<Figura2D>(); 

      Punto p1 = new Punto(1,1); 
      Punto p2 = new Punto(2,2); 
      Punto p3 = new Punto(3,3); 

      Rettangolo r1 = new Rettangolo(p1,p2); 
      Rettangolo r2 = new Rettangolo(p1,p3); 
      Rettangolo r3 = new Rettangolo(p2,p3); 

      Cerchio c1 = new Cerchio(p1,1.0); 
      Cerchio c2 = new Cerchio(p1,2.0); 
      Cerchio c3 = new Cerchio(p3,1.0); 

      F.add(r1); F.add(r2); F.add(r3); //HERE!!!! 
      F.add(c1); F.add(c2); F.add(c3); 

      return F; 
     } 
+0

は推奨読書​​:[OracleのJavaチュートリアル](https://docs.oracle.com/javase/tutorial/java/javaOO/index.html)のクラスに。 –

+0

エラーが発生したコード行は、次のように書き直すことができます: 'F.add(new Figura2D(r1)); F.add(新しいFigura2D(r2)); F.add(新しいFigura2D(r3));「 –

答えて

0

RettangoloFigura2Dのインスタンスではありません、ありがとうございました。 Rettangoloクラスでは、継承を使用するためにextends Figura2Dを追加します。

public class Rettangolo extends Figura2D{} 
+0

あなたが正しいと思う、CerchioをFigura2Dにも拡張する必要がありますよね? RettangoloとCerchioはfigura2Dでなければならないからです。私は明日最初からコードを書くつもりです。ありがとう – Eleazar

+0

はい、PuntoとCerchioは同じように正確に行うべきです。 継承について詳しくは、https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.htmlを参照してください。 これを実行したら、「private Object obj;」を削除します。 FIGura2Dクラスから、そして2番目のコンストラクタ(引数付きのコンストラクタ)は、もう必要がないためです。 それが問題を解決する場合は、この回答を承認してください。がんばろう :) –

関連する問題