नीचे दी गई त्रुटि क्यों है? इसे कैसे कामयाब करें?एक वर्ग एक ही हस्ताक्षर की विधि के साथ लक्षण क्यों बढ़ा सकता है?
संपादित करें: मुझे लगता है कि चूंकि ए और बी संकलन (इंटरफेस, कक्षा) जोड़े के लिए संकलित करते हैं, इसलिए सी संकलन करते समय लागू करने के लिए सही स्थैतिक विधि कॉल चुनना एक मामला है। मैं प्राथमिकता को आदेश के अनुसार होने की अपेक्षा करता हूं।
scala> trait A {def hi = println("A")} defined trait A scala> trait B {def hi = println("B")} defined trait B scala> class C extends B with A :6: error: error overriding method hi in trait B of type => Unit; method hi in trait A of type => Unit needs `override' modifier class C extends B with A scala> trait A {override def hi = println("A")} :4: error: method hi overrides nothing trait A {override def hi = println("A")}
संपादित करें: ध्यान दें कि रूबी में यह अच्छी तरह से काम करता है:
>> module B; def hi; puts 'B'; end; end => nil >> module A; def hi; puts 'A'; end; end => nil >> class C; include A; include B; end => C >> c = C.new => # >> c.hi B => nil
उत्कृष्ट! बहुत बुरा है कि अगर मैं 'कक्षा सी ए के साथ बी बढ़ाता है' की कोशिश करता हूं, तो त्रुटि संघर्ष को हल करने के इस तरीके का उल्लेख नहीं करती है। – IttayD
@ स्काला 2.10.4 के साथ IttayD: त्रुटि संदेश कहता है कि इसे कैसे हल करें: (नोट: इसे कक्षा सी में ओवरराइड घोषित करके हल किया जा सकता है) कक्षा सी ए के साथ बी बढ़ाता है { –