我在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?");
}
}
显示的错误是此类不能在接口中声明方法。建议工具提示说我也应该在界面中声明这个方法。
答案 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刷新相关的工作空间并删除错误。