接口Java 1.8中的具体方法

时间:2013-04-12 10:27:36

标签: java interface

在讨论过程中,我的一位朋友告诉我concrete methods would be allowed in java 1.8 in interfaces那时我脑子里有一个问题i-e如果他们被允许那么我们将如何区分这些方法。例如
我有两个界面Animal.javaPet.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中是否有任何解决方案,因为我无法找到它的答案。

1 个答案:

答案 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 ....");
}