2009-10-31 8 views
9

चलो कहते हैं कि मैं इस तरह कुछ कक्षाएं करते हैं:कंस्ट्रक्टर तर्क दोहराए बिना स्कैला में उपclassing के लिए शॉर्टकट?

abstract class View(val writer: XMLStreamWriter) { 
    // Implementation 
} 

class TestView(writer: XMLStreamWriter) extends View(writer) { 
    // Implementation 
} 

देखें में से अधिकांश उपवर्गों अलग निर्माता तर्क लेने के लिए नहीं जा रहे हैं। मैं कुछ इस तरह लिखने में सक्षम होना चाहते हैं:

class TestView extends View { 
    // Implementation 
} 

वहाँ उपवर्गों लिखने के लिए इतना है कि आप स्पष्ट रूप से निर्माता आर्ग को परिभाषित करने और (सुपर क्लास करने के लिए उन्हें पारित करने के लिए की जरूरत नहीं है कुछ शॉर्टकट है ताकि मैं डॉन अगर मैं सुपरक्लास के हस्ताक्षर को बदलता हूं तो मेरे सभी सबक्लास को फिर से लिखना नहीं है)?

उत्तर

11

मुझे डर है कि आप वहां पर हैं। कन्स्ट्रक्टर्स को विरासत में नहीं मिला है या पॉलिमॉर्फिक और सबक्लस कन्स्ट्रक्टर नहीं हैं, जबकि उन्हें अपने तत्काल सुपरक्लास के लिए एक कन्स्ट्रक्टर का आह्वान करना चाहिए और हमेशा ऐसा नहीं किया जा सकता है, सिवाय इसके कि शून्य-तर्क कन्स्ट्रक्टर है, जो कि उल्लेख के अनुसार निहित है एक "विस्तार" खंड में superclass का नाम।

12
abstract class View { 
    def writer: XMLStreamWriter 
    // Implementation 
} 

class TestView(val writer: XMLStreamWriter) extends View { 
    // Implementation 
} 

क्या आप यह देख रहे हैं?

संबंधित मुद्दे