MyInterface myObj = new Obj();
MyInterface mySec = new Sec();
इस कानूनी होने के लिए के लिए धन्यवाद, दोनों Obj
और Sec
होगा MyInterface
के कार्यान्वयनकर्ता होना चाहिए। इन दो वस्तुओं के बीच का अंतर होगा वे कार्यान्वयन प्रदान करते हैं। Obj
और Sec
दो बहुत ही अलग या बहुत समान चीजें कर सकता है, लेकिन उनकी समानता यह है कि वे उस अनुबंध का पालन करेंगे जिस पर आप भरोसा कर सकते हैं। यदि आप एक विधि
public void doSomethingWith(MyInterface thing) {
thing.frob();
}
प्रत्येक वस्तु, myObj
और mySec
, इस विधि में पारित किया जा सकता है पर विचार करें, और इस विधि तो इस्तेमाल कर सकते हैं कि वस्तु की frob
विधि (यह मानते हुए frob इंटरफ़ेस घोषणा का हिस्सा है)। यह मुक्ति है। यह आपको इंटरफेस के लिए प्रोग्रामिंग करके और कार्यान्वयन के लिए बहुत शक्तिशाली चीजें करने की अनुमति देता है। उदाहरण के लिए, आप कक्षाओं की कार्यक्षमता बढ़ा सकते हैं और उन वर्गों में कोड की एक पंक्ति नहीं बदल सकते हैं, आप बस एक निर्भरता का एक अलग कार्यान्वयन पास करते हैं। आप से जुड़े नहीं हैं के साथ, doSomethingWith
विधि के अंदर कोई भी इम्प्लांटेशन नहीं है।
लेकिन मैं भी पढ़ा है कि अगर हम MyInterface के रूप में वस्तु myObj घोषित, myObj (कक्षा Obj से) अपने स्वयं के तरीकों का इस्तेमाल करने में सक्षम नहीं होगा, है, जिसे ठीक
आंतरिक , Obj
के उदाहरणों को Obj
API पर पूर्ण पहुंच जारी रहेगी। myObj
अभी भी एक Obj
है, यह हमेशा अपने कार्यान्वयन के विवरण का उपयोग करने में सक्षम होगा।
public interface MyInterface {
void frob();
}
public class Obj implements MyInterface {
public void frob() {
doFrobbing();
}
private void doFrobbing() {
System.out.println("frobbing");
}
public static void main(String[] args) {
MyInterface myObj = new Obj();
myObj.frob(); // still internally calls doFrobbing()
((Obj)myObj).doFrobbing(); // visible only via class reference
}
}
Obj
के उदाहरण अभी भी Obj
के उदाहरण हो जाएगा, और ऐसे मामलों में अभी भी doFrobbing
उपयोग करने के लिए सक्षम हो जाएगा। बाहरी रूप से, का उपयोग कर इंटरफ़ेस संदर्भ के माध्यम से उन उदाहरणों को केवल इंटरफ़ेस विधियों तक पहुंचने में सक्षम होंगे।
स्रोत
2011-12-07 00:35:21
[यह] (http://docs.oracle.com/javase/tutorial/java/concepts/interface.html) मदद की हो सकती है। – Nerdtron