में स्कैला विरासत डिफ़ॉल्ट पैरामीटर मेरे पास पैरामीटर के लिए एक डिफ़ॉल्ट मान वाला एक सार वर्ग है। मैं सभी संभावित कार्यान्वयन के निर्माता में डिफ़ॉल्ट मान का पुन: उपयोग नहीं करना चाहता हूं।मूल वर्ग
abstract class Place(val place: String = "World")
class Message(val message: String = "Hello", p: String) extends Place(p) {
override def toString = s"$message $place"
}
क्या मैं
new Message("Hi", "Universe") = "Hi Universe" // Ok
new Message("Hi") = "Hi World" // Doesn't work, second parameter is required
new Message() = "Hello World" // Doesn't work, second parameter is required
मैं एक सहायक निर्माता दूसरा पैरामीटर को छोड़ते हुए का उपयोग कर विचार प्राप्त करना चाहते हैं, लेकिन यह मदद नहीं करता है के बाद से आप मुख्य निर्माता के बाहर सुपर कंस्ट्रक्टर्स फोन नहीं कर सकते हैं।
मैं जानना चाहता हूं कि यह कैसे करें, या यह क्यों संभव नहीं है। मैं विरासत का उपयोग नहीं करने की तरह कामकाज की तलाश नहीं कर रहा हूं।
काम करता है। encapsulated के रूप में नहीं। यहां आपके पास 3 ऑब्जेक्ट्स हैं जो ऑब्जेक्ट (ऑब्जेक्ट, अमूर्त, और क्लास) हैं। विशेष रूप से ऑब्जेक्ट और सार के समान क्रेडिट नहीं देना। वर्ग संदेश को ऑब्जेक्ट के बारे में जानना है, इसलिए इसका उपयोग करने के लिए अधिक तारों की आवश्यकता होती है, अगर इससे कोई समझ हो। सार और ठोस इसे सब संभाल लेना चाहिए। – Drew