मैं करने के लिए एक पूरा जवाब साथ आने के लिए कोशिश कर रहा हूँ बनाम साथ इंटरफेस:जावा 8 - डिफ़ॉल्ट तरीकों सार कक्षाएं
"। क्यों/जब एक अंतरफलक बजाय एक अमूर्त वर्ग का उपयोग करें"
और निम्न पर सत्यापन/सुझावों की तलाश में।
इसका एक जवाब है,
"इसके बारे में कुछ के लिए कार्यान्वयन प्रदान करते हैं। इससे पहले कि ठोस वर्ग में आते हैं विशिष्ट प्रकार, एक अमूर्त वर्ग, आम तौर पर सही में एक अंतरफलक नीचे परिभाषित करने के लिए विरासत पदानुक्रम (जावा एपीआई में इसके कई उदाहरणों में से) इंटरफ़ेस परिभाषित संरचना के कुछ सामान्य पहलुओं को लागू करता है और पिन करता है।
एक अमूर्त वर्ग का उपयोग करने का एक और अच्छा कारण यह है कि एक स्पष्ट तार्किक पदानुक्रम हैके बीचसार वर्ग का उपयोग उस पदानुक्रम को व्यवस्थित करने के लिए किया जाता है, जबकि एक कंक्रीट के बजाय एक अमूर्त वर्ग होने के कारण, इस पदानुक्रम में नीचे कंक्रीट कक्षा पर वस्तुओं का तात्कालिकता जहां वे पूरी तरह परिभाषित हैं और इस प्रकार अर्थपूर्ण हैं। "
फिर, इस संदर्भ में, क्यू आता है:
"जावा 8 के बाद से, इंटरफेस default method कार्यान्वयन को परिभाषित कर सकते क्यों मैं इंटरफ़ेस के बजाय में डिफ़ॉल्ट विधि (रों) लिखना नहीं होता। ? एक अमूर्त वर्ग है कि उन विधि (रों) लागू करता "
इसका जवाब होगा:
" एक कारण यह है कि: इंटरफ़ेस विधियां सभी सार्वजनिक हैं, फ़ील्ड सदस्य सभी स्थिरांक हैं (अंतिम & सार्वजनिक)। आप विधियों के एक्सेस विशेषाधिकारों को प्रतिबंधित करना चाहते हैं और/या उन्हें गैर-स्थिर स्थिति पर संचालित करना चाहते हैं।
दूसरा यह है: एक वंश वर्ग सुपर द्वारा सर क्लास विधि (ओं) पर कॉल कर सकता है, जबकि यह डिफ़ॉल्ट इंटरफ़ेस विधियों पर ऐसा नहीं कर सकता है। इसके अलावा, इंटरफेस में वंशजों द्वारा कोई कन्स्ट्रक्टर नहीं लगाया जाना चाहिए।
शेष कारण उपर्युक्त जावा 8 में समान हैं। ? "
इन ऊपर के अलावा, मैं क्यों नहीं बल्कि विशेष रूप से अब मैं डिफ़ॉल्ट इंटरफ़ेस तरीकों है कि एक अंतरफलक से एक अमूर्त वर्ग के लिए जाना होगा के बाद से जावा 8
कृपया ध्यान दें: मैं Java 8 default methods vs. non-abstract methods in abstract classes देखा है और Interface with default methods vs Abstract class in Java 8 कुछ अन्य उपयोगी विचार विमर्श के साथ। यह क्यू बल्कि के बारे में क्यों इसका उल्टा से एक अंतरफलक से अधिक एक अमूर्त वर्ग का फैसला किया।
TIA है।
हालांकि मुझे लगता है कि यह एक वैध सवाल है, मुझे यकीन नहीं है कि यह स्टैक ओवरफ्लो के लिए स्थैतिक है या नहीं। आप [प्रोग्रामर.एसई] (programmers.stackexchange.com) को आजमा सकते हैं। – nhaarman