在讨论过程中,我的一位朋友告诉我concrete methods would be allowed in java 1.8 in interfaces
那时我脑子里有一个问题i-e如果他们被允许那么我们将如何区分这些方法。例如
我有两个界面Animal.java
和Pet.java
,两者都有相同的具体方法i-e eat()
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
}
现在这是我的困惑。如何使用animal
对象来调用inte Test
上的特定方法
public class Demo{
public static void main(String[] args){
Zoo zoo = new Zoo();
zoo.eat(); //What would be the output
}
}
有什么建议吗?或者在java1.8中是否有任何解决方案,因为我无法找到它的答案。
答案 0 :(得分:6)
除非在Zoo类中覆盖eat,否则会出现编译时错误。
java: class defaultMethods.Zoo inherits unrelated defaults for eat() from types Pet and Animal
最新且最新的jdk是here btw。语法应为
default void eat(){
System.out.println("Animal Start eating ....");
}