2012-03-15 81 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刷新相关工作空间并删除错误。