2013-03-02 94 views
-1

如果繼承TrainCar這是一個問題。如果繼承GCompoud那很好。錯在哪裏?爲什麼子類繼承父類有錯?

父:

public class TrainCar extends GCompound{ 

    public TrainCar(double size){ 

     engine = new Engine(size); 
     add(engine); 
     } 
} 

子類:

public class Engine extends TrainCar { 

    public Engine (double size){ //if inherit TrainCar that's a problem. 
            //if inherit GCompoud that's well. 

     GPolygon engine = engine(size);  
     add(engine); 
    } 
} 

的棚車繼承TrainCar這是很好。

在單張#31:

public class Boxcar extends TrainCar { 

public Boxcar(Color color) { 
} 

http://www-cs-faculty.stanford.edu/~eroberts/courses/cs106a/handouts/30-graphical-structures.pdf

+2

你正在創建一個遞歸循環。當創建一個新的引擎時,它會創建一個新的TrainCar,它創建一個新的引擎,創建一個新的TrainCar,從而創建一個新的Engine ... – Jensen 2013-03-02 11:15:33

+1

正如Jensen Somers所說的,您正在創建遞歸循環。你正在試圖做什麼指定。讓它更清晰 – 2013-03-02 11:21:00

+0

這不是一個遞歸循環。如果子類繼承GCompoud,那就行。我不知道爲什麼子類不能擴展父類。 – user2094097 2013-03-02 11:41:37

回答

0

您必須調用TrainCar構造函數中的Engine構造。你可以這樣做:

public Engine (double size) { 
    super(size); 

    GPolygon engine = engine(size);  
    add(engine); 
} 
+0

謝謝.Input super(size);之後,該行不會顯示錯誤,但運行後是錯誤的。 – user2094097 2013-03-02 11:37:30

+0

究竟是什麼錯誤? – niculare 2013-03-02 12:02:12