2011-06-08 185 views
0

我有一個擴展JList的類,我不知道如何使JList構造函數在我的類中工作。我知道,這可與JList的構造進行:從類擴展構造函數

DefaultListModel model = new DefaultListModel(); 
JList list = new JList(model); 

相反,如果我做同樣的我的同班同學:

DefaultListModel model = new DefaultListModel(); 
DatabaseJList lista = new DatabaseJList(model); 

的IDE建議我刪除參數匹配DatabaseJList。

當我擴展它時,不應該是繼承到我的類的Jlist構造函數嗎?

感謝您的幫助;)

回答

4

不可以。您必須明確定義構造函數。任何想要「繼承」的構造函數都必須在子類中定義,並且很可能必須使用相同的參數調用super(..)

0

可以使用

super(...) 

定義在類的構造函數具有相同的參數超類調用父類的在類的構造函數的構造。然後,只需使用超()來調用父類的構造函數,然後繼續做你的初始化

記住,超()應該是你的構造

1

的第一線構造函數不能被繼承(至少,而不是你所想的)。你必須明確寫出這樣的構造函數:

class DatabaseJList extends JList { 

    public DatabaseJList(ListModel model) { 
     super(model); // Call through to the super-class constructor 
    } 

    ... 

} 
+0

你應該使用'ListModel'接口而不是'DefaultListModel'類(即程序到接口)。 – 2011-06-08 21:55:47

+0

@Steve:啊,我不認爲'ListModel'可能是一件事情。我會更新... – 2011-06-08 21:58:48

0

我認爲你需要把超(模型);在你的DatabaseJList構造函數中