2013-04-12 7 views
7

एक चर्चा के दौरान मेरे दोस्त में से एक मुझे बताता है कि concrete methods would be allowed in java 1.8 in interfaces तब उस समय एक प्रश्न मेरे दिमाग में आया यानी यदि उन्हें अनुमति दी गई तो हम विधियों को कैसे अलग करेंगे। उदाहरण के लिए
मेरे पास है दो इंटरफ़ेस Animal.java और Pet.java और दोनों एक ही ठोस विधि यानी eat()
इंटरफेस में कंक्रीट विधियां जावा 1.8

public interfaces Animal{ 

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

    public interfaces Pet{ 

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

अब मेरी Zoo.java इन दोनों को लागू करने और

ओवरराइड नहीं किया है

अब यहाँ मेरी confusion.How मैं inteface animal पर एक विशेष विधि Test वस्तु

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

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

कोई सुझाव का उपयोग कर कॉल कर सकते हैं क्या है? या जावा 1.8 में इसके लिए कोई समाधान है क्योंकि मैं इसका जवाब नहीं ढूंढ पा रहा हूं।

+0

होना चाहिए, लेकिन मैं इन में इस जवाब नहीं मिला question.If उसे डुप्लिकेट तो इस मुद्दे resolvation – Freak

+0

इस itnerest का भी हो सकता है, में स्थिर गैर विरासत में मिला तरीकों के बारे में मेरे गाइड कृपया है इंटरफेस http://stackoverflow.com/q/14646027/106261 – NimChimpsky

+0

आपके मूल प्रश्न का उत्तर यहां दिया गया है http://stackoverflow.com/a/7857884/106261 – NimChimpsky

उत्तर

5

आपको संकलन समय त्रुटि मिलती है, जब तक कि आप अपने चिड़ियाघर वर्ग में खाने को ओवरराइड न करें।

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

नवीनतम और geatest jdk here btw है। और वाक्य रचना

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

महान :) तो इस मामले में दोनों विधियों (पशु और पालतू जानवर से) अद्यतन हो जाते हैं? सही? – Freak

+0

अपडेट नहीं किया गया है, – NimChimpsky

+0

ओवरराइड एक आखिरी बात है, इसका मतलब है कि अगर हमारे पास एक ही नाम के साथ डिफ़ॉल्ट कंक्रीट विधियां हैं तो हमें डिफ़ॉल्ट विधि को ओवरराइड करना चाहिए? अन्यथा यह एक संकलन समय त्रुटि है? सही? – Freak

संबंधित मुद्दे