2015-12-27 8 views
6

मैं जावा और ऑब्जेक्ट उन्मुख प्रोग्रामिंग के लिए शुरुआत कर रहा हूं और अवधारणाओं में कुछ कठिनाई कर रहा हूं। होमवर्क के लिए, मुझे दो अलग-अलग कक्षाएं लिखनी होंगी जिनके पास एक ही सटीक एपीआई है लेकिन उन्हें अलग-अलग लागू किया गया है। इसका क्या अर्थ है और यह कैसे काम करता है?दो वर्गों के लिए एक ही एपीआई है लेकिन विभिन्न कार्यान्वयन का क्या अर्थ है?

+3

यह एक कार की तरह है, यह या तो एक स्पोर्ट्सकार या एक पारिवारिक कार हो सकता है। वे एक ही तरीके (तेज, बंद, शुरू, ...) होना चाहिए, लेकिन उनका व्यवहार अलग है। इसलिए, उनके पास एक ही तरीके हैं, बस एक अलग कार्यान्वयन – Stultuske

उत्तर

1

समान API का अर्थ है कि दो वर्गों में सार्वजनिक विधियों की सटीक सूची होती है (प्रत्येक में एक ही विधि का नाम और विधि पैरामीटर अन्य वर्ग के रूप में होता है)। इन तरीकों का कार्यान्वयन प्रत्येक वर्ग में अलग हो सकता है। इसके अलावा, प्रत्येक वर्ग में निजी विधियां भी हो सकती हैं जो अन्य कक्षा में दिखाई नहीं देती हैं, क्योंकि निजी विधियां एपीआई का हिस्सा नहीं हैं जो एक वर्ग अपने उपयोगकर्ताओं को प्रदान करती है।

एक एपीआई आमतौर पर जावा में एक इंटरफेस द्वारा परिभाषित किया जाता है, इसलिए एक ही एपीआई वाले दो वर्ग आमतौर पर एक ही इंटरफेस को लागू करेंगे।

+0

आप 'संरक्षित' विधियों IINM को भूल रहे हैं। –

+0

@ टीटी। मैंने एक साधारण जवाब देने की कोशिश की। 'संरक्षित' विधियों को कक्षाओं का विस्तार करने वाले उपयोगकर्ताओं के लिए एपीआई का हिस्सा माना जा सकता है, लेकिन उन उपयोगकर्ताओं के लिए एपीआई का हिस्सा नहीं है जो केवल कक्षाओं के उदाहरण बनाते हैं और उन्हें विस्तारित नहीं करते हैं। – Eran

+0

मैं हमेशा उन्हें "प्रोग्रामिंग इंटरफ़ेस" का हिस्सा मानता हूं। ['API'] में कुछ भी नहीं (https://en.wikipedia.org/wiki/Application_programming_interface) सार्वजनिक का उल्लेख करता है। अनुमोदित आमतौर पर एक एपीआई कहा जाता है जब बाहरी दुनिया में एक इंटरफेस पर विचार करते हुए, 'इंटरफ़ेस' निर्माण की तरह जो सख्ती से सार्वजनिक है। –

3

मैं आपको दिखाऊंगा। यह एक उदाहरण है कि दो वर्गों में एक ही एपीआई है।

interface ISpeak { 
    void sayHi(); 
} 

class Teacher implements ISpeak{ 
    @Override 
    public void sayHi() { 
     System.out.println("Hi!I am a Teacher!"); 
    } 
} 

class Student implements ISpeak{ 
    @Override 
    public void sayHi() { 
     System.out.println("Hi!I am a Student!"); 
    } 
} 
+1

यह वास्तव में "इसका क्या अर्थ है" प्रश्न का उत्तर नहीं देता है, केवल "मैं इसे कैसे कार्यान्वित करूं" – Stultuske

+2

@Stultuske यह इसे एक संक्षिप्त उदाहरण आईएमओ के साथ चित्रित करता है। –

+0

टॉक सस्ता है, मुझे कोड दिखाएं। :) – xylsh

0

जावा के भीतर और आधुनिक OOP के व्यापक संदर्भ इसका मतलब है कि दो class तों ही interface को लागू करना चाहिए, प्रभावी रूप से उन वर्गों के ग्राहकों उन कंक्रीट के कार्यान्वयन विवरण के बजाय कि इंटरफ़ेस द्वारा प्रदान की अमूर्त पर निर्भर करने की इजाजत दी कक्षाएं।

+0

क्या आप कंप्यूटर-बोलने के बिना समझा सकते हैं? समझाओ जैसे आप किसी ऐसे व्यक्ति के लिए जो वास्तव में कुछ भी नहीं जानता, बहुत सरल तरीके से। धन्यवाद। – user1454994

1

आप के बजाय सरल भाषा के लिए कहा "कंप्यूटर बात:"

एक इंटरफेस एक अनुबंध की तरह है। अनुबंध कह सकते हैं हम

  1. लिए मुझे बताओ है आपका नाम (getName())
  2. मुझे आप रैंक बताओ (Getränk())
  3. मुझे बताओ अपना नंबर (getNumber())

अनुबंध का नाम है (अक्सर "सक्षम" - देखने योग्य, आदि में समाप्त होता है) आइए पहचान योग्य। यदि हम घोषणा करते हैं कि हम अनुबंध को लागू करते हैं तो हमें इसकी सभी आवश्यकताओं को पूरा करना होगा।

आप एक इंसान हो सकते हैं और मैं रोबोट हो सकता हूं - अन्य विभिन्न विशेषताओं और व्यवहार के साथ विभिन्न वर्ग।

class Human extends Object implements Identifiable 
class Robot extends Object implements Identifiable 

कार्यक्रम हमें बहुत अलग वस्तुओं के रूप में पेश कर सकता है। यह रोबोट को जाने और खुद को डॉक करने और चार्ज करने के लिए कह सकता है। यह मनुष्य को ऐसा कुछ करने के लिए कह सकता है जो मनुष्य केवल कर सकते हैं। लेकिन यह उनमें से किसी से खुद को पहचानने के लिए कह सकता है।

संबंधित मुद्दे