2017-10-17 55 views
0

您好我不知道如何解決我的問題,在哪裏是這裏! 有人說: 在類型設置的方法Add(Figura2D)不適用於參數(Rettangolo) 我嘗試這樣做:在類型Set <Figura2D>中的方法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(new Figura2D(r2)); F.add(new Figura2D(r3));' –

回答

0

Rettangolo不是Figura2D一個實例。 在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類,第二個構造函數(帶有參數的構造函數),因爲你不再需要它了。 如果解決了您的問題,請批准此答案。祝你好運 :) –

相關問題