Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 实现的类是否可以在其父接口中声明方法?_Java_Interface - Fatal编程技术网

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

Java 实现的类是否可以在其父接口中声明方法?,java,interface,Java,Interface,我在Eclipse中尝试了这个,它显示了一个编译错误。然而,在在线IDE中尝试同样的方法没有显示错误。这就是混乱的原因 interface Iclass{ void print(); void hey(); } class sdlfkajl implements Iclass { public void print(){ System.out.println("Impl class"); } public void hey(){ System.out.pr

我在Eclipse中尝试了这个,它显示了一个编译错误。然而,在在线IDE中尝试同样的方法没有显示错误。这就是混乱的原因

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?");
  }
}
显示的错误是该类不能有未在接口中声明的方法。建议工具提示说我也应该在界面中声明这个方法

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

是的,它可以


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

我不知道你有什么错误,但你可以向接口的实现中添加额外的方法。

一个
实现的类
当然可以在其
接口
中声明方法。但是必须实现在
接口中声明的方法,除非声明为
抽象
,我能看到的唯一错误是接口和实现在不同的包中。您的界面具有默认可见性(也称为“包专用”),这意味着它只能在同一个包中看到(和使用)。尝试将接口声明为公共接口

public interface Iclass {
}

除此之外,在类中包含接口中未指定的方法在Java中是完全合法的。接口是契约,是您必须实现的方法。但这并不局限于这些代码。

您的代码中没有错误

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

您可能还设置了编译失败的警告


所以请检查您的IDE设置

我试图重现相同的场景,但在我这一阶段效果很好。请尝试清理代码,这可能会奏效。这可能是一个接口可见性问题

允许您在类中添加未在该类接口中声明的方法

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


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

那么错误是什么?我们应该猜猜吗?顺便说一句,对你的问题的快速回答是肯定的。它应该有用。代码没有错误的概念。