reference type जावा में, Object
को छोड़कर, एक एकल सुपरक्लास से निकला है।
वैसे, जावा कक्षा शून्य या अधिक इंटरफेस लागू कर सकती है।
आम तौर पर, एक इंटरफेस एक अनुबंध है जो कार्यान्वयन वर्ग को लागू करने के तरीकों का वर्णन करता है, हालांकि सीधे कार्यान्वयन प्रदान किए बिना।
दूसरे शब्दों में, जावा क्लास को इसके अनुबंध का पालन करने के लिए बाध्य किया जाता है और इस प्रकार इंटरफेस द्वारा प्रदान किए गए विधि हस्ताक्षरों को कार्यान्वित करने के लिए बाध्य किया जाता है।
एक इंटरफ़ेस एक प्रकार का गठन करता है। तो आप पैरामीटर पास कर सकते हैं और इंटरफ़ेस प्रकारों के रूप में घोषित विधियों से मूल्यों को वापस कर सकते हैं, इस तरह की आवश्यकता होती है कि पैरामीटर और रिटर्न प्रकार आवश्यक तरीकों को लागू किए बिना उनके लिए ठोस कार्यान्वयन प्रदान किए बिना आवश्यक तरीके से लागू करें।
यह कई अमूर्त पैटर्न के लिए आधार सेट करता है, उदाहरण के लिए, dependency injection।
स्कैला, अपने आप में, लक्षण हैं। लक्षण आपको जावा इंटरफेस की सभी सुविधाएं देते हैं, जिसमें महत्वपूर्ण अंतर होता है जिसमें वे विधि कार्यान्वयन और चर शामिल हो सकते हैं। लक्षण एक बार लागू करने के तरीकों को लागू करने का एक स्मार्ट तरीका है - और इसके माध्यम से - उन तरीकों को उन सभी वर्गों में वितरित करें जो विशेषता का विस्तार करते हैं। जावा कक्षाओं के लिए इंटरफेस की तरह, आप एक से अधिक विशेषता को स्कैला वर्ग में मिला सकते हैं।
जब से मैं कोई रूबी पृष्ठभूमि है, हालांकि, मैं तुम्हें डेविड पोलाक की 'शुरुआत स्काला "(amazon link) से एक अंश को इंगित करेंगे:
रूबी mixins, जो तरीकों कि हो सकता है के संग्रह हैं किसी भी वर्ग में मिश्रित। चूंकि रूबी में स्थिर टाइपिंग नहीं है और विधि पैरामीटर के प्रकारों को घोषित करने का कोई तरीका नहीं है, इसलिए इंटरफेस जैसे अनुबंध को परिभाषित करने के लिए मिश्रणों का उपयोग करने का कोई उचित तरीका नहीं है। रूबी मिश्रक कक्षाओं में कोड लिखने के लिए एक तंत्र प्रदान करते हैं लेकिन पैरामीटर प्रकारों को परिभाषित करने या लागू करने के लिए एक तंत्र नहीं है।
इंटरफेस इस पोस्ट में वर्णित से भी अधिक कर सकते हैं; चूंकि विषय विशाल हो सकता है, मैं आपको तीन दिशाओं में से प्रत्येक में अधिक जांच करने का सुझाव देता हूं, जबकि यदि आपके पास जावा पृष्ठभूमि भी है, तो स्कैला और इसलिए लक्षण सीखने के लिए सस्ती हैं।
स्कैला के पास केवल गुण हैं (मिश्रण और इंटरफेस लक्षणों से घिरे होंगे)।आपकी प्रोफ़ाइल को देखते हुए ऐसा लगता है कि आपके पास जावा पृष्ठभूमि है। आपको स्कैला का प्रयास करना चाहिए, आपको पता चलेगा कि जब आप मिश्रण करना चाहते हैं तो कुछ लक्षण बहुत सुविधाजनक हैं जो आपके वर्तमान वर्ग में ऑर्थोगोनल हैं। जब आप लक्षणों को ढेर करना चाहते हैं तो सही करना मुश्किल है। अधिक जानकारी के लिए http://www.artima.com/pins1ed/traits.html देखें। – huynhjl
@ams: इस पर एक नज़र डालें [उत्तर] (http://stackoverflow.com/a/23124968/33311)। यह उपयोगी हो सकता है भले ही इसे "groovy" टैग किया गया हो। – Lernkurve