2015-06-08 2 views
5

निम्न कोड में, मैं वर्ग B की एक वस्तु का दृष्टांत करने के लिए दो तरीके होते हैं।हमें किसी ऑब्जेक्ट को इंटरफ़ेस के प्रकार से कब संदर्भित करना चाहिए?

public interface A {} 

public class B implements A {} 

public static void main(String[] args) 
{ 
    A test1 = new B(); 
    B test2 = new B(); 
} 

चर परीक्षण 1 और test2 के बीच क्या अंतर है?
इंटरफ़ेस प्रकार (टाइप 1) का उपयोग करके मुझे तुरंत चालू करना चाहिए और मुझे कब नहीं चाहिए?

+1

test1 इंटरफ़ेस में मौजूद विधियों तक ही सीमित है, test2 नहीं है। बहुत से लोग इंटरफेस को कोड लिखते हैं, क्योंकि वे तब तक काम नहीं करना चाहते जब तक कि दूसरी टीम ने उस इंटरफ़ेस के कार्यान्वयन को लिखना समाप्त नहीं किया हो, या सिर्फ इसलिए कि वे नहीं जानते कि कार्यान्वयन क्या होगा। – Stultuske

+0

आप https://docs.oracle.com/javase/tutorial/java/concepts/inheritance.html और https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html साथ शुरू करना चाहिए - मैं मुझे यकीन नहीं है कि क्या आपके पास पहले से ही है लेकिन इसे शुरुआती बिंदु देना चाहिए। – prabugp

उत्तर

4

आप अंतरफलक के प्रकार का उपयोग करें जब आप के रूप में यह आप कोड की एक पंक्ति को बदलने के द्वारा इंटरफ़ेस एक प्रयोग कर रहे हैं के कार्यान्वयन को बदलने के लिए अनुमति देता है, और अधिक लचीला अपने कोड रखना चाहते हैं। उदाहरण के लिए - A test1 = new C(); आपके कोड को ए के कार्यान्वयन का उपयोग करने के लिए बी के कार्यान्वयन का उपयोग करने से स्विच करेगा। आपको जब भी संभव हो इंटरफ़ेस प्रकार के चर का उपयोग करना पसंद करना चाहिए।

यदि आप B test2 = new B(); में एक विशिष्ट कार्यान्वयन के प्रकार का उपयोग कर रहे हैं, तो आप उस विशिष्ट कार्यान्वयन पर अपना कोड डाल रहे हैं, और आप आसानी से एक अलग कार्यान्वयन पर स्विच नहीं कर सकते हैं। कभी-कभी आप यह से बचने नहीं कर सकते हैं कि आपके कोड है कि इंटरफ़ेस ए

0

हम इंटरफ़ेस एक के संदर्भ की आवश्यकता का हिस्सा नहीं हैं बी के तरीकों कॉल करने के लिए, जब हम जहां इंटरफ़ेस लागू किया गया था वर्ग के बारे में पता नहीं है है, लेकिन संकलन समय के मामले में दोनों परिणाम समान हैं ..

1

ऑब्जेक्ट उन्मुख प्रोग्रामिंग के सुनहरे नियमों में से एक एक इंटरफ़ेस में प्रोग्राम है, कार्यान्वयन के लिए नहीं। एक इंटरफ़ेस में प्रोग्रामिंग करके, आप आसानी से उस इंटरफ़ेस को लागू करने वाले नए वर्ग जोड़ सकते हैं। एकमात्र जगह जहां आपको अपना कोड बदलना होगा, वह ऐसी वस्तु है जहां ऐसी वस्तु बनाई गई है। आपको उन स्थानों को अलग करना चाहिए।

अपने कोड में, इसका मतलब है कि आपको उस स्थान को अलग करना चाहिए जहां आप अपनी ऑब्जेक्ट बनाएं। प्रत्येक स्थान पर जहां आप उस ऑब्जेक्ट का उपयोग करते हैं, तो आपको इसके प्रकार को इंटरैस ए

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