2013-04-12 31 views
7

Bir tartışma sırasında arkadaşımdan biri bana o zaman aklıma bir soru geldi, yani aklıma bir soru geldi yani izin verildiyse, o zaman yöntemleri nasıl ayırt edeceğiz.Örneğin,
iki Arayüz Animal.java ve Pet.java ve her iki eat()
arayüzler içinde beton yöntemleri Java1.8

public interfaces Animal{ 

     void eat(){ 
       System.out.println("Animal Start eating ...."); 
     } 
    } 

    public interfaces Pet{ 

     void eat(){ 
       System.out.println("Pet Start eating ...."); 
     } 
    } 

Şimdi benim Zoo.java Bunlardan ikisi uygulamak ve

geçersiz vermedi yani aynı beton yöntemine sahip Şimdi burada 03.210

benim confusion.How ben Test nesneyi

public class Demo{ 
     public static void main(String[] args){ 

       Zoo zoo = new Zoo(); 
       zoo.eat(); //What would be the output 
     } 
} 

Herhangi önerileri kullanarak inteface animal üzerinde belirli yöntemini çağırabilirsiniz nedir? ya da cevabı bulamadığım için java1.8'de bunun için bir çözüm var mı.

+0

olmalı ama bunlar bu cevapları bulamadık question.if mükerrer sonra bu çok itnerest olabilecek bu konunun çözünmesi – Freak

+0

, statik olmayan kalıtsal yöntemler konusunda bana yol lütfen arayüzler http://stackoverflow.com/q/14646027/106261 – NimChimpsky

+0

orijinal sorunuz burada cevaplandırılmıştır http://stackoverflow.com/a/7857884/106261 – NimChimpsky

cevap

5

Hayvanat bahçesi sınıfınızda yemek yenmezseniz, derleme zamanı hatası alırsınız.

java: class defaultMethods.Zoo inherits unrelated defaults for eat() from types Pet and Animal 

En son ve en gdest jdk değeri here btw'dur. Ve sözdizimi

default void eat(){ 
    System.out.println("Animal Start eating ...."); 
} 
+0

harika :) bu durumda bu iki yöntem (Animal & Pet) güncellendi? sağ? – Freak

+0

güncelleştirilmedi, overrridden – NimChimpsky

+0

son bir şey, Aynı adda varsayılan somut yöntemlerimiz var demektir, o zaman varsayılan yöntemi geçersiz kılmalıyız demektir? aksi halde derleme zamanı hatası mı? – Freak

İlgili konular