अक्का जानने के लिए प्रयास करते समय, मैं अक्सर इस के समान एक वर्ग पदानुक्रम के साथ उदाहरण पाते हैं:अंतर
sealed trait Message
case class TextMessage(user: String, text: String) extends Message
case class StatusMessage(status: String) extends Message
हालांकि, यानी Scala docs में एक निम्न उदाहरण नहीं है :
abstract class Notification
case class Email(sourceEmail: String, title: String, body: String) extends Notification
case class SMS(sourceNumber: String, message: String) extends Notification
case class VoiceRecording(contactName: String, link: String) extends Notification
एक वर्ग पदानुक्रम के लिए निर्माता पैरामीटर के बिना एक आधार वर्ग के रूप में एक अमूर्त वर्ग (या इस मामले में सील सार वर्ग) बनाम एक सील विशेषता का प्रयोग करने में क्या अंतर है? क्या दूसरे पर एक का उपयोग करने में कुछ फायदे हैं?
संपादित करें:
विशेष रूप से, दोनों हैं, विशेषता और अमूर्त वर्ग सिले हुए हैं, मैं उन्हें फ़ाइल के बाहर, सही विस्तार नहीं कर सकते? उस मामले में मैं जावा में उनसे भी उत्तराधिकारी नहीं हो सका? यदि मामला मुहरबंदता the suggested duplicate में पाए गए अधिकांश तर्क प्रस्तुत करेगी क्योंकि वे फ़ाइल के बाहर विरासत को संदर्भित करते हैं।
की संभावित डुप्लिकेट [लक्षण के बजाय सार वर्गों का उपयोग करने का लाभ यह है क्या?] (http: // stackoverflow। कॉम/प्रश्न/1991042/किस-का-लाभ-का-उपयोग-अमूर्त-वर्ग-बदले में गुण) –
स्कैला जावा इंटरऑप का समर्थन करने की आवश्यकता नहीं होने पर एक बहुत ही सरल और बेहतर भाषा होगी। लोगों के लिए भी सीखना आसान होगा। –
[यह] (http://stackoverflow.com/questions/35249901/scala-client-composition-with-traits-vs-implementing-an-abstract-class/35251513#35251513) पढ़ने के लायक भी है। – jwvh