एक उप-वर्ग द्वारा अतिरंजित होने पर मैं उसी विशिष्ट उपclass उदाहरण में लेने के लिए मूल विधियों को कैसे लागू कर सकता हूं?उपclassed तर्कों के साथ subclass विधियों को ओवरराइड करना?
यानी .:
abstract class Animal {
def mateWith(that: Animal)
}
class Cow extends Animal {
override def mateWith...?
}
तार्किक रूप से, एक Cow
केवल mateWith
एक और Cow
में सक्षम होना चाहिए। हालांकि, अगर मैं override def mateWith(that: Cow)
करता हूं, तो यह वास्तव में बेस क्लास विधि को ओवरराइड नहीं करता है (जिसे मैं चाहता हूं, क्योंकि मैं उप-वर्ग में अपने अस्तित्व को लागू करना चाहता हूं)।
मैं यह सुनिश्चित करने के लिए जांच सकता हूं कि दूसरा उदाहरण गाय प्रकार का है, और यदि यह नहीं है तो अपवाद फेंक दें - क्या यह मेरा सबसे अच्छा विकल्प है? अगर मेरे पास और जानवर हैं तो क्या होगा? मुझे अपवाद-फेंकने वाला कोड दोहराना होगा।
स्वीट डील, स्कैला हेक के रूप में सुविधाजनक! –
मैं "सुविधाजनक" के बारे में इतना निश्चित नहीं हूं, लेकिन यह अभिव्यक्तिपूर्ण है। –
सोचा कि मैं इसे फिर से देखूंगा - इसे [एफ-बाउंड-पॉलिमॉर्फिज्म] (https://twitter.github.io/scala_school/advanced-types.html#fbounded) के रूप में जाना जाता है। –