पहले जावा संस्करणों में यह संभव नहीं था कि आपके पास ठोस वर्गों का उपयोग करने के लिए अमूर्त कक्षाएं हों और केवल घोषित विधियां हों। जावा 8 "डिफ़ॉल्ट विधि" या (डिफेंडर विधियों) की नई सुविधा पेश करता है, जो डेवलपर को इन इंटरफेस के मौजूदा कार्यान्वयन को तोड़ने के बिना इंटरफेस में नई विधियों को जोड़ने की अनुमति देता है। यह इंटरफ़ेस को कार्यान्वित करने की अनुमति देने के लिए लचीलापन प्रदान करता है जो उस स्थिति में डिफ़ॉल्ट रूप से उपयोग करेगा जहां एक ठोस वर्ग उस विधि के लिए कार्यान्वयन प्रदान करने में विफल रहता है।
Let छोटा सा उदाहरण पर विचार को समझने के लिए कि यह कैसे काम करता है:
public interface oldInterface {
public void existingMethod();
default public void newDefaultMethod() {
System.out.println("New default method"
" is added in interface");
}
}
निम्नलिखित वर्ग जावा JDK 8
public class oldInterfaceImpl implements oldInterface {
public void existingMethod() {
// existing implementation is here…
}
}
क्यों defaut विधि में सफलतापूर्वक संकलन होगा? मौजूदा जेडीके ढांचे को पुन: प्रस्तुत करना हमेशा बहुत जटिल होता है। जेडीके फ्रेमवर्क में एक इंटरफ़ेस को संशोधित करें जो सभी वर्गों को इंटरफ़ेस तक फैलाता है जिसका अर्थ है कि कोई भी नई विधि जोड़ना कोड की लाखों पंक्तियों को तोड़ सकता है। इसलिए, पिछड़े तरीकों से पिछड़े संगत तरीके से इंटरफेस को विस्तारित करने के लिए एक तंत्र के रूप में पेश किया गया है।
नोट:
लेकिन हम compatability.but इसकी हमेशा अनुशंसा की इस पिछड़े हासिल कर सकते हैं इंटरफेस delarations साथ उपयोग करने के लिए ही नहीं है कि वे क्या सबसे अच्छा के लिए उपयोग किया जाता है।
सरल उदाहरण के लिए यदि आप एक interface Human_behaviour
आप की तरह to_Walk();
to_Eat()
, to_Love()
, to_Fight()
उदाहरण के लिए एक अनोखा तरीका में हर इंसान वस्तु .Like
के लिए कहते हैं कि हर लागू करने कक्षा में इस इंटरफेस के सभी कार्यों का उपयोग कर सकते है
एक मानव तलवारों और अन्य वस्तुओं का उपयोग करके बंदूकें और आगे का उपयोग कर लड़ सकता है। इस प्रकार इंटरफ़ेस एक आशीर्वाद है लेकिन हमेशा आवश्यकता के अनुसार उपयोग किया जा सकता है।
क्या आप किसी विधि के 'डिफ़ॉल्ट' कार्यान्वयन शब्द की बात कर रहे हैं? इंटरफेस में किसी विधि को * सामग्री * जोड़ने की कोई अन्य संभावना नहीं है। – Zabuza
http://www.tutorialspoint.com/java8/java8_default_methods.htm ... upvoted क्योंकि मुझे SO पर डुप्लिकेट नहीं मिला। –
डिफ़ॉल्ट तरीकों का उपयोग करके आईएमएचओ नियमित अभ्यास के लिए नियमित रूप से टालना चाहिए, और थोड़ा कठिन बनाना डीबगिंग कर सकता है, और यदि आप वास्तव में संग्रह करना चाहते हैं कि आप सार कक्षाओं के साथ जा सकते हैं क्योंकि वे समान कार्यक्षमता –