एक मुहरबंद विशेषता एक सील वर्ग के समान है?
जहाँ तक sealedजाता है, हाँ। वे निश्चित रूप से traitऔर class, के बीच सामान्य अंतर साझा करते हैं ।
या, यदि नहीं, तो क्या अंतर हैं?
विवादास्पद।
सील किए गए विशेषता (और कब नहीं) का उपयोग करना एक अच्छा विचार है?
यदि आपके पास एक है sealed class X, तो आपको Xकिसी भी उपवर्ग के रूप में अच्छी तरह से जांचना होगा । वही सच नहीं है sealed abstract class Xया sealed trait X। तो आप कर सकते हैं sealed abstract class X, लेकिन इस तरह से अधिक क्रिया हैtrait और थोड़े से लाभ के लिए ।
abstract classओवर का उपयोग करने का मुख्य लाभ traitयह है कि यह पैरामीटर प्राप्त कर सकता है। प्रकार वर्ग का उपयोग करते समय यह लाभ विशेष रूप से प्रासंगिक है। उदाहरण के लिए, मान लीजिए कि आप सॉर्ट किए गए ट्री बनाना चाहते हैं। आप इसे लिख सकते हैं:
sealed abstract class Tree[T : Ordering]
लेकिन आप ऐसा नहीं कर सकते:
sealed trait Tree[T : Ordering]
चूंकि संदर्भ सीमा (और दृश्य सीमा) अंतर्निहित मापदंडों के साथ कार्यान्वित की जाती है। यह देखते हुए कि लक्षण मापदंडों को प्राप्त नहीं कर सकते, आप ऐसा नहीं कर सकते।
व्यक्तिगत रूप से, मैं sealed traitइसे पसंद करता हूं और इसका उपयोग करता हूं जब तक कि कोई विशेष कारण मुझे उपयोग नहीं करता है sealed abstract class। और मैं सूक्ष्म कारणों के बारे में बात नहीं कर रहा हूं, लेकिन आपके चेहरे के कारणों को आप अनदेखा नहीं कर सकते हैं, जैसे कि प्रकार की कक्षाओं का उपयोग करना।