2014-03-03 48 views
0

我正在學習一個面向對象的編程任務,我很好奇什麼是創建由其他對象組成的對象的最佳方法。在我的任務中,我必須創建一個帶有其他四個obects(引擎,主體,gasTank,傳輸)的汽車對象,我已經創建了這些類,但我不知道如何在我的汽車類中使用這些對象作爲參數構造一個構造函數。只要尋求指導,任何幫助將不勝感激!創建一個由其他類構成的類的最佳實踐

+0

通過他們在作爲參數?使用構建器模式?使用簡單的setter?我不確定你在問什麼。 –

+0

聽起來像規範[訪問者模式](http://en.wikipedia.org/wiki/Visitor_pattern)。 –

+0

附上你的汽車類的代碼,然後我們可以指出你在正確的方向。 – Tyler

回答

0

假設您創建在同一個包中的所有類:

class Car { 
    private Engine myEngine; 

    public Car(Engine engine) { 
     myEngine = engine; 
    } 

} 

現在你可以調用Car對象是這樣的:

Car myCar = new Car(new Engine()); 
+0

謝謝你,這就是我一直在尋找的! – user3072504

+0

很高興能幫到你! –

0

你需要這樣的事情。我假設你的Car
類的領域:engine,body,gasTank,transmission

public Car(Engine engine, Body body, GasTank gasTank, Transmission transmission){ 
    this.engine = engine; 
    this.body = body; 
    this.gasTank = gasTank; 
    this.transmission = transmission; 
} 
0

汽車的構造看起來是這樣的:

public Car(Engine engine, Body body, Gastank gastank, Transmission transmission) { 
    this.engine = engine; 
    this.body = body; 
    this.gastank = gastank; 
    this.transmission = transmission; 
} 
0

你可能會認爲現實世界,以幫助您找到答案。一輛車有一個引擎,車身,gasTank和變速箱。

所以,你可能會考慮:

public class Car { 

    Engine engine; 
    Body body; 
    GasTank gasTank; 
    Transmission transmission; 

    public Car() { 
     // TODO Auto-generated constructor stub 
    } 

    public Engine getEngine() { 
     return engine; 
    } 

    public void setEngine(Engine engine) { 
     this.engine = engine; 
    } 

    public Body getBody() { 
     return body; 
    } 

    public void setBody(Body body) { 
     this.body = body; 
    } 

    public GasTank getGasTank() { 
     return gasTank; 
    } 

    public void setGasTank(GasTank gasTank) { 
     this.gasTank = gasTank; 
    } 

    public Transmission getTransmission() { 
     return transmission; 
    } 

    public void setTransmission(Transmission transmission) { 
     this.transmission = transmission; 
    } 

} 
0

記住,像任何其他方法,對一個類的構造函數可以給出參數。例如:

public class Car { 
    private engine; 

    public Car(Engine eng){ 
     engine = eng; 
    } 
} 

代碼爲您BodyGasTankTransmission類是相似的。然後,您可以通過傳遞在每個單獨部件的創建一個新的Car

Car car = new Car(engine, body, tank, transmission) 

(假設engine等已被適當地定義)。

你也可以有一個默認的構造函數,在沒有參數傳入,新Car實例使用默認的部分:

public Car(){ 
    engine = new Engine() 
    body = new Body() 
    tank = new GasTank() 
    transmission = new Transmission() 
}