2013-01-08 187 views
0

我有一個名爲Item的類。它有以下參數: User owner,Category categoryString description如何創建擴展類的實例?

接下來,我有一個名爲Painting的子類,它擴展了Item-class。 A Painting有兩個參數:titlepainter

在代碼中的某個位置,我想創建一個Painting對象。它應該可以從測試文件是這樣的運行代碼:

User u1 = new User ("[email protected]"); 
Category cat = new Category("cat2"); 
Item painting = sellerMgr.offerPainting(u1, cat, "Selfportret", "Rembrandt"); 

應該有類sellerMgr代碼應能註冊(創建)該項目(作爲繪畫),所以我例如可以在數據庫中使用它。我如何準確地調用該代碼?每當或不要創建新的Item或新的Painting以及要在創建代碼中添加哪些參數時,我會感到困惑。

+0

您在'offerPainting'方法中嘗試了什麼?這聽起來像你已經有了正確的想法... –

回答

2

你有一個新的類

public class Painting extends Item 

你會想要一個構造函數,提供了兩個新的參數,字符串標題,用戶畫家

public Painting(User owner, Category category, String description, String title, User painter){ 
    super(owner, category, description); 
    this.title = title; 
    this.painter = painter 
} 

每當你想一個畫家的新實例你可以調用這個方法來爲你設置任何Item變量,同時引入你想要的兩個新參數。呼叫可能看起來像是

Item paintingAsItem = new Painting(u1, cat, "desc", "Selfportret", "Rembrandt"); //Generic 
Painting painting = new Paining(u1, cat, "desc", "Selfportret", "Rembrandt"); 
+0

我忘了的部分是將Item參數放在繪畫的構造函數中。我已經想知道如何通過創建一個繪畫來將這些參數的值賦給Item。謝謝! – Joetjah

1

也許你想是這樣的:

Painting p = new Painting(u1, cat, title, painter); 

假設你的類定義是這樣的:

public class Painting extends Item { 

    private String title; 
    private String painter; 

    public Painting(User owner, Category category, String title, String painter){ 
    super(owner, category); 
    this.title = title; 
    this.painter = painter; 
    } 
} 
+0

對我的問題非常明確的答案。謝謝! – Joetjah

0

Painting構造應採取CategoryUser作爲參數,並應把它們傳遞給super這就要求'Item'的構造函數。

像:

public Painting(User user, Category category) { super(user, category); ...
}

0

在這種情況下sellerMgr.offerPainting應創建並返回類型繪畫的對象。繪畫可以投射到一個項目,但大多數情況下,您應該使用擴展類,它將具有比Item更多的功能。