खोज…


परिचय

लक्षण ग्रूवी भाषा में संरचनात्मक निर्माण वस्तुएं हैं। लक्षण इंटरफेस के कार्यान्वयन को सक्षम करते हैं। वे स्थैतिक प्रकार की जाँच और संकलन के साथ संगत हैं। व्यवहार को डिफ़ॉल्ट कार्यान्वयन और राज्य के साथ इंटरफेस के रूप में व्यवहार किया जाता है। एक विशेषता की घोषणा विशेषता कीवर्ड का उपयोग करके की जाती है। ---------- लक्षण विधियों का दायरा केवल सार्वजनिक और निजी तरीकों का समर्थन करता है।

मूल उपयोग

एक trait विधियों और क्षेत्रों का एक पुन: प्रयोज्य सेट है जिसे एक या अधिक कक्षाओं में जोड़ा जा सकता है।

trait BarkingAbility {
    String bark(){ "I'm barking!!" }
}

इन्हें सामान्य इंटरफ़ेस की तरह प्रयोग किया जा सकता है, जो implements कीवर्ड कीवर्ड का उपयोग करते हैं:

class Dog implements BarkingAbility {}
def d = new Dog()
assert d.bark() = "I'm barking!!"

इसके अलावा, वे कई विरासत (हीरे के मुद्दे से बचने) को लागू करने के लिए इस्तेमाल किया जा सकता है।

कुत्ते उसके सिर को खरोंच कर सकते हैं, इसलिए:

trait ScratchingAbility {
    String scratch() { "I'm scratching my head!!" }
}

class Dog implements BarkingAbility, ScratchingAbility {}
def d = new Dog()
assert d.bark() = "I'm barking!!"
assert d.scratch() = "I'm scratching my head!!"

एकाधिक वंशानुक्रम की समस्या

वर्ग कई लक्षण लागू कर सकता है। यदि एक लक्षण दूसरे लक्षण की तरह एक ही हस्ताक्षर के साथ विधि को परिभाषित करता है, तो एक बहु विरासत समस्या है। उस स्थिति में अंतिम घोषित विशेषता से विधि का उपयोग किया जाता है:

trait Foo {
  def hello() {'Foo'}
}
trait Bar {
  def hello() {'Bar'}
}

class FooBar implements Foo, Bar {}

assert new FooBar().hello() == 'Bar'


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow