2012-03-15 80 views
-2

我在Eclipse中試過這個,它顯示一個編譯錯誤。但是,在線IDE Compilr中嘗試使用相同的結果顯示沒有錯誤。這就是混亂的原因。實現類是否可以在其父接口中聲明方法?

interface Iclass{ 
    void print(); 
    void hey(); 
} 

class sdlfkajl implements Iclass { 
    public void print(){ 
    System.out.println("Impl class"); 
    } 
    public void hey(){ 
    System.out.println("Hey!"); 
    } 
    public void extra(){ 
    System.out.println("Should I be here?"); 
    } 
} 

顯示的錯誤是該類不能在接口中聲明方法。建議tooltip說我也應該在界面中聲明這個方法。

+3

那麼錯誤是什麼?我們應該猜測?順便提一下,你的問題的答案是肯定的。 – 2012-03-15 07:37:58

+0

它應該工作。代碼沒有錯誤的概念。 – 2012-03-15 07:39:21

回答

0

代碼中沒有錯誤。

您可能會錯誤地警告錯誤 - IntelliJ可以設置爲將上面的代碼標記爲警告。

您可能還有一個警告設置失敗的編譯。

因此請檢查您的IDE設置!

3

實現類是否可以在其父接口中聲明方法嗎?

是的,它可以。

我不知道你的情況是什麼問題,但它不是這樣。

0

我不知道你得到了什麼錯誤,但你可以添加額外的方法來實現一個接口。

0

implemented class當然可以有方法沒有在其interface聲明。但必須實施在interface中聲明的方法,除非它被聲明爲abstract

0

我能看到你得到的唯一錯誤是如果你的接口和你的實現在不同的包中。您的界面具有默認可見性(又名「包私人」),這意味着它只能在同一包中看到(並使用)。嘗試聲明您的接口是公開的

public interface Iclass { 
} 

除此之外,具有接口中未指定的類中的方法在Java中是完全合法的。界面是合約,你必須執行的方法。它不僅限於這些。

0

我試圖重現相同的情況,但它在我的最後工作正常。嘗試清理代碼,可能會工作。可能是這是一個界面的可見性問題

0

您可以在類中添加未在該類的接口中聲明的方法。

我經常使用Eclipse,我認爲您遇到的問題必須處理Eclipse本身而不是您的代碼。有時,當您更改並保存界面時,Eclipse將在發生更改的行上顯示錯誤。

嘗試刪除整個更改的方法,並將代碼重新輸入或粘貼回原處。這應該會使Eclipse刷新相關工作空間並刪除錯誤。