ग्रूवी - लक्षण
लक्षण भाषा का एक संरचनात्मक निर्माण है जो अनुमति देते हैं -
- व्यवहार की संरचना।
- इंटरफेस के रनटाइम कार्यान्वयन।
- स्थिर प्रकार की जाँच / संकलन के साथ संगतता
उन्हें डिफ़ॉल्ट कार्यान्वयन और स्थिति दोनों को ले जाने वाले इंटरफेस के रूप में देखा जा सकता है। विशेषता कीवर्ड का उपयोग करके एक लक्षण परिभाषित किया गया है।
एक विशेषता का एक उदाहरण नीचे दिया गया है -
trait Marks {
void DisplayMarks() {
println("Display Marks");
}
}
इसके बाद इंटरफ़ेस को लागू करने के लिए कार्यान्वयन कीवर्ड का उपयोग उसी तरह से किया जा सकता है जैसे इंटरफेस।
class Example {
static void main(String[] args) {
Student st = new Student();
st.StudentID = 1;
st.Marks1 = 10;
println(st.DisplayMarks());
}
}
trait Marks {
void DisplayMarks() {
println("Display Marks");
}
}
class Student implements Marks {
int StudentID
int Marks1;
}
अंतर लागू करना
लक्षण इंटरफेस को लागू कर सकते हैं, जिस स्थिति में इंटरफ़ेस के कीवर्ड का उपयोग करके इंटरफेस को घोषित किया जाता है।
एक इंटरफ़ेस को लागू करने वाले विशेषता का एक उदाहरण नीचे दिया गया है। निम्नलिखित उदाहरण में निम्नलिखित मुख्य बिंदुओं को नोट किया जा सकता है।
इंटरफ़ेस टोटल विधि DisplayTotal के साथ परिभाषित किया गया है।
लक्षण चिह्न कुल इंटरफ़ेस को लागू करता है और इसलिए DisplayTotal विधि के लिए एक कार्यान्वयन प्रदान करने की आवश्यकता होती है।
class Example {
static void main(String[] args) {
Student st = new Student();
st.StudentID = 1;
st.Marks1 = 10;
println(st.DisplayMarks());
println(st.DisplayTotal());
}
}
interface Total {
void DisplayTotal()
}
trait Marks implements Total {
void DisplayMarks() {
println("Display Marks");
}
void DisplayTotal() {
println("Display Total");
}
}
class Student implements Marks {
int StudentID
int Marks1;
}
उपरोक्त कार्यक्रम का उत्पादन होगा -
Display Marks
Display Total
गुण
एक गुण गुणों को परिभाषित कर सकता है। संपत्ति के साथ लक्षण का एक उदाहरण नीचे दिया गया है।
निम्नलिखित उदाहरण में, प्रकार पूर्णांक के मार्क्स 1 एक संपत्ति है।
class Example {
static void main(String[] args) {
Student st = new Student();
st.StudentID = 1;
println(st.DisplayMarks());
println(st.DisplayTotal());
}
interface Total {
void DisplayTotal()
}
trait Marks implements Total {
int Marks1;
void DisplayMarks() {
this.Marks1 = 10;
println(this.Marks1);
}
void DisplayTotal() {
println("Display Total");
}
}
class Student implements Marks {
int StudentID
}
}
उपरोक्त कार्यक्रम का उत्पादन होगा -
10
Display Total
व्यवहार की संरचना
हीरे के मुद्दे से बचते हुए, कई विरासत को नियंत्रित तरीके से लागू करने के लिए लक्षणों का उपयोग किया जा सकता है। निम्नलिखित कोड उदाहरण में, हमने दो लक्षण परिभाषित किए हैं -Marks तथा Total। हमारा छात्र वर्ग दोनों लक्षणों को लागू करता है। चूंकि छात्र वर्ग दोनों लक्षणों का विस्तार करता है, इसलिए यह दोनों विधियों का उपयोग करने में सक्षम है -DisplayMarks तथा DisplayTotal।
class Example {
static void main(String[] args) {
Student st = new Student();
st.StudentID = 1;
println(st.DisplayMarks());
println(st.DisplayTotal());
}
}
trait Marks {
void DisplayMarks() {
println("Marks1");
}
}
trait Total {
void DisplayTotal() {
println("Total");
}
}
class Student implements Marks,Total {
int StudentID
}
उपरोक्त कार्यक्रम का उत्पादन होगा -
Total
Marks1
लक्षण का विस्तार करना
लक्षण एक और विशेषता का विस्तार कर सकते हैं, जिस स्थिति में आपको उपयोग करना चाहिए extendsकीवर्ड। निम्नलिखित कोड उदाहरण में, हम मार्क्स निशान के साथ कुल गुण का विस्तार कर रहे हैं।
class Example {
static void main(String[] args) {
Student st = new Student();
st.StudentID = 1;
println(st.DisplayMarks());
}
}
trait Marks {
void DisplayMarks() {
println("Marks1");
}
}
trait Total extends Marks {
void DisplayMarks() {
println("Total");
}
}
class Student implements Total {
int StudentID
}
उपरोक्त कार्यक्रम का उत्पादन होगा -
Total