2012-04-02 59 views
0

當我嘗試在Java中調用一個名爲「ShowHistory」的類時,錯誤顯示爲:「類型ShowHistory必須實現繼承的抽象方法ActionListener.actionPerformed(ActionEvent) 「當我試圖用Java調用一個類時,出現錯誤

這裏是我的代碼:

public class ShowHistory extends JFrame implements ActionListener { 
    ... 
    } 

的IDE建議我做這個類是一個抽象類,但是當我將其轉換爲抽象的,另一段代碼出錯:

  ShowHistory frame = new ShowHistory(); 

它顯示:「不能實例化類型ShowHistory」。

有什麼想法解決這個問題嗎?

+0

你是否實現了ActionListener的所有方法? – 2012-04-02 16:59:48

+1

錯誤消息非常有幫助。 – 2012-04-02 17:00:14

+0

是的。有沒有使用ActionListener的問題? – 2012-04-02 17:00:37

回答

1

類型ShowHistory必須實現繼承的抽象方法ActionListener。的actionPerformed(動作事件)

這意味着爲你的類ShowHistory實施ActionListener,它必須實現所有的接口定義的方法。在這種情況下,這是方法actionPerformed(ActionEvent)

public void actionPerformed(ActionEvent e) { ... } 

當您更改ShowHistoryabstract,你來了,這樣ShowHistory不能被實例化,它的子類(誰可以被實例化,如果不是抽象的),將負責制定在ActionListener方法。

1

當一個類implements一個接口,它需要爲每個接口的方法提供一個實現。

這裏,所討論的接口是ActionListener。它包含一個單一的方法,actionPerformed(ActionEvent)

你的類,ShowHistory,需要爲這種方法提供一個實現:

public void actionPerformed(ActionEvent e) { ... } 

該錯誤消息告訴您當前類沒有做到這一點。

0

你不能實例化一個抽象類。

然後,對於第一個錯誤消息,您只需在類中實現actionPerformed方法,以覆蓋ActionListener接口中的方法。當一個類實現一個接口時,它必須實現接口包含的每個方法。

正如你在documentation中看到的,ActionListener只有一個方法actionPerformed,你需要實現。

0

你不能實例化一個抽象類:這就是abstract的定義!

然而,您可以實例化一個子類,可能是一個匿名類。例如:

ShowHistory frame = new ShowHistory() { 
    // Add methods you might need to implement here 
}; 
0

當您實現任何接口或擴展任何類時,您必須實現接口或抽象類中定義的所有方法擴展。

如果你想要專門的類(在相同的層次結構中的較低層)提供實現,你可以使你的類抽象(如ide向你所建議的那樣),但在這種情況下,你將無法創建對象此類,並且您將被要求創建提供實現的新類的對象

相關問題