实现的类是否可以在其父接口中声明未声明的方法?

时间:2012-03-15 07:35:47

标签: java interface

我在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?");
  }
}

显示的错误是此类不能在接口中声明方法。建议工具提示说我也应该在界面中声明这个方法。

7 个答案:

答案 0 :(得分:6)

  

实现的类是否可以在其父接口中声明未声明的方法?

是的,可以。

我不知道你的问题是什么,但不是这个。

答案 1 :(得分:1)

您的代码中没有错误。

您可能错误地警告错误 - 可以将IntelliJ设置为将上面的代码标记为警告。

您可能还有一个设置警告以使编译失败。

请检查您的IDE设置!

答案 2 :(得分:0)

我不知道你得到了什么错误,但是你可以在接口的实现中添加其他方法。

答案 3 :(得分:0)

implemented class当然可以在interface中声明未声明的方法。但是必须实现在interface中声明的方法,除非它被声明为abstract

答案 4 :(得分:0)

我能看到的唯一错误是你的界面和你的实现是否在不同的包中。您的界面具有默认可见性(也称为“包私有”),这意味着它只能在同一个包中看到(和使用)。尝试将您的界面声明为公开

public interface Iclass {
}

除此之外,在接口中未指定的类中使用方法在Java中是完全合法的。接口是契约,你必须实现的方法。它不仅限于那些。

答案 5 :(得分:0)

我尝试重现相同的场景,但它在我的最终工作正常。尝试清理代码,这可能有效。可能这是一个界面可见性问题

答案 6 :(得分:0)

您可以在类中添加未在该类接口中声明的方法。

我经常使用Eclipse,我认为你遇到的问题必须处理Eclipse本身而不是你的代码。有时,当您更改并保存界面时,Eclipse将在进行更改的行显示错误。

尝试删除整个更改的方法,然后重新键入或粘贴代码。这应该使Eclipse刷新相关的工作空间并删除错误。