एक इंटरफ़ेस एक टाइप होता है जिसमें ऐसे सदस्य होते हैं जो आपस में जुड़ी कार्यक्षमता का समूह परिभाषित करते हैं। यह क्लास के उपयोग को उसके इम्प्लीमेंटेशन से अलग करता है, जिससे कई अलग-अलग इम्प्लीमेंटेशन संभव हो जाते हैं, या फॉर्मेटिंग, तुलना या रूपांतरण जैसे किसी जेनेरिक व्यवहार का समर्थन किया जा सकता है।
एक इंटरफ़ेस का सिंटैक्स क्लास के समान होता है, सिवाय इसके कि मेथड केवल सिग्नेचर के रूप में दिखते हैं और कोई बॉडी नहीं दी जाती।
public interface Language {
String getLanguageName();
String speak();
}
public class ItalianTraveller implements Language, Cloneable {
// from Language interface
public String getLanguageName() {
return "Italiano";
}
// from Language interface
public String speak() {
return "Ciao mondo";
}
// from Cloneable interface
public Object clone() {
ItalianTraveller it = new ItalianTraveller();
return it;
}
}
इंटरफ़ेस द्वारा परिभाषित सभी ऑपरेशनों को लागू करने वाली क्लास द्वारा लागू किया जाना चाहिए।
इंटरफ़ेस में आमतौर पर इंस्टेंस मेथड होते हैं।
Java क्लास लाइब्रेरी में मिलने वाले इंटरफ़ेस का एक उदाहरण, ऊपर दिखाए गए Cloneable के अलावा, Comparable<T> है।
Comparable<T> इंटरफ़ेस को वहाँ लागू किया जा सकता है जहाँ कलेक्शन में डिफ़ॉल्ट जेनेरिक सॉर्ट क्रम की आवश्यकता होती है।
इस अभ्यास में आप रिमोट कंट्रोल कारों पर कुछ और काम करेंगे।
एक प्रयोगात्मक कार बनाई गई है और टेस्ट ट्रैक को ऐसे बदलना है कि वह प्रोडक्शन और प्रयोगात्मक, दोनों तरह की मॉडलों को संभाल सके। दोनों तरह की कारें बन चुकी हैं और आपको टेस्ट ट्रैक पर इन दोनों को संभालने का तरीका निकालना है।
इसके अलावा, प्रोडक्शन कारें अब कुछ सफलता पाने लगी हैं। टीम का बॉस प्रोडक्शन कारों की रैंकिंग जारी करके मुकाबले की भावना बनाए रखना चाहता है।
RemoteControlCar इंटरफ़ेस में दो मेथड जोड़िए:
drive(), जो कुछ नहीं लौटाता, औरgetDistanceTravelled(), जो एक int लौटाता है।फिर ProductionRemoteControlCar और ExperimentalRemoteControlCar से RemoteControlCar इंटरफ़ेस लागू करवाइए।
इसमें इंटरफ़ेस के लिए ज़रूरी सभी मेथड लागू करना भी शामिल है।
.drive() को हर बार कॉल करने पर कार को एक तय दूरी तय करनी चाहिए:
ProductionRemoteControlCar 10 यूनिट चलती है,ExperimentalRemoteControlCar 20 यूनिट चलती है।.getDistanceTravelled() मेथड को उन यूनिटों की संख्या लौटानी चाहिए जितनी दूरी कार ने अब तक तय की है।
ProductionRemoteControlCar prod = new ProductionRemoteControlCar();
prod.drive();
prod.getDistanceTravelled();
// => 10
ExperimentalRemoteControlCar exp = new ExperimentalRemoteControlCar();
exp.drive();
exp.getDistanceTravelled();
// => 20
TestTrack.race(RemoteControlCar car) मेथड लागू कीजिए, जिसमें car को drive() करने का मौका मिलता है।
TestTrack.race(new ProductionRemoteControlCar());
TestTrack.race(new ExperimentalRemoteControlCar());
// this should execute without an exception being thrown
कृपया ProductionRemoteControlCar क्लास में Comparable<T> इंटरफ़ेस लागू कीजिए।
कारों के लिए डिफ़ॉल्ट क्रम जीतों के अवरोही क्रम में होना चाहिए।
स्टैटिक TestTrack.getRankedCars() लागू कीजिए, जो इसे दी गई कारों को जीतों की संख्या के अवरोही क्रम में लगाकर लौटाए।
ProductionRemoteControlCar prc1 = new ProductionRemoteControlCar();
ProductionRemoteControlCar prc2 = new ProductionRemoteControlCar();
prc1.setNumberOfVictories(2);
prc2.setNumberOfVictories(3);
List<ProductionRemoteControlCar> unsortedCars = new ArrayList<>();
unsortedCars.add(prc1);
unsortedCars.add(prc2);
List<ProductionRemoteControlCar> rankings = TestTrack.getRankedCars(unsortedCars);
// => rankings.get(0) == prc2
// => rankings.get(1) == prc1
Exercism पर साइन अप कीजिए और Java को 26 कॉन्सेप्ट158 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।