Java1.8接口中的具体方法
在一次讨论中,我的一位朋友告诉我,java 1.8允许在接口中使用Java1.8接口中的具体方法,java,interface,Java,Interface,在一次讨论中,我的一位朋友告诉我,java 1.8允许在接口中使用具体方法,当时我想到了一个问题,即如果允许,我们将如何区分这些方法。例如 我有两个接口Animal.java和Pet.java,它们都有相同的具体方法I-eeat() public interfaces Animal{ void eat(){ System.out.println("Animal Start eating ...."); } }
具体方法
,当时我想到了一个问题,即如果允许,我们将如何区分这些方法。例如我有两个接口
Animal.java
和Pet.java
,它们都有相同的具体方法I-eeat()
public interfaces Animal{
void eat(){
System.out.println("Animal Start eating ....");
}
}
public interfaces Pet{
void eat(){
System.out.println("Pet Start eating ....");
}
}
现在我的Zoo.java
实现了这两个功能,并且没有覆盖 public class Zoo() implements Pet , Animal{
//Now name method is a part of this class
}
现在是我的困惑。我如何使用Test
objectpublic class Demo{
public static void main(String[] args){
Zoo zoo = new Zoo();
zoo.eat(); //What would be the output
}
}
有什么建议吗?或者在java1.8中有什么解决方案,因为我找不到它的答案。除非在Zoo类中重写eat,否则会出现编译时错误
java: class defaultMethods.Zoo inherits unrelated defaults for eat() from types Pet and Animal
最新和最新的jdk是。语法应该是
default void eat(){
System.out.println("Animal Start eating ....");
}
但是我没有在这些问题中找到答案。如果是重复的,那么请指导我解决这个问题。这可能也是最新的,接口中的静态非继承方法您最初的问题在这里得到了回答@nimchinpsky可能是我的错,但我仍然无法找到(1)zoo.eat()的输出是什么代码>和(2)如何调用接口特定的方法?@freak yoru语法错误,顺便说一句,我将使用jdk 8进行尝试,给我5分钟的时间:)所以在这种情况下,两种方法(来自动物和宠物)都会得到更新?对吗?不更新,覆盖最后一件事,这意味着如果我们有同名的默认具体方法,那么我们应该覆盖默认方法?否则就是编译时错误?对吗?