इन दो आंतरिक क्लास घोषणाओं के बीच क्या अंतर है? फायदे/नुकसान पर भी टिप्पणी करें?इंटरफेस बनाम कक्षा में
केस ए: कक्षा के भीतर कक्षा।
public class Levels {
static public class Items {
public String value;
public String path;
public String getValue() {
return value;}
}
}
और केस बी: इंटरफ़ेस के भीतर कक्षा।
public interface Levels{
public class Items {
public String value;
public String path;
public String getValue() {
return value;}
}
}
मेड सुधार: Getvalue विधि के प्लेसमेंट के लिए।
और जानकारी: मैं दोनों मामलों में ए और बी दोनों में आइटम कक्षा को तुरंत चालू करने में सक्षम हूं जो इंटरफ़ेस को लागू नहीं करता है। प्रभावी रूप से एक वर्ग एक अंतरफलक स्थिर संदर्भ के लिए पारगम्य अंदर परिभाषित कर रही है -
public class Z{//NOTE: NO INTERFACE IMPLEMENTED here!!!!
Levels.Items items = new Levels.Items();
}
के बाद से एक अंतरफलक instantiated नहीं है, एक अंतरफलक के अंदर सभी तत्वों स्तर instantiated बस क्योंकि आप एक इंटरफेस का दृष्टांत नहीं कर सकते हैं इंटरफ़ेस के बिना डॉट नोटेशन से सुलभ हैं।
तो यह कहकर कि बी वर्ग के मामले में आइटम वर्ग स्थिर नहीं है। चूंकि दोनों मामलों में ए और बी को तत्काल तत्काल किया जाता है, इसलिए मैं स्थैतिक या आंतरिक या घोंसले पर अर्थशास्त्र की तलाश नहीं कर रहा हूं। मुझे अर्थशास्त्र पर जवाब देना बंद करो। मैं संकलक, रनटाइम और व्यवहार संबंधी मतभेद/फायदे चाहता हूं, या यदि कोई ऐसा नहीं कहता है। अर्थशास्त्र पर कोई और जवाब कृपया !!!!! जेवीएम या .NET वीएम विनिर्देशन पर एक विशेषज्ञ पाठ पुस्तक अर्थात् पुजारी के बजाय इस उत्तर प्रश्न को खुश करें।
साक्षात्कार का उत्पादन सवाल? –
मैं अर्थशास्त्र की तलाश नहीं कर रहा हूं कि इसे आंतरिक या घोंसला वर्ग कहा जाता है या नहीं। मैं फीचर मतभेदों की तलाश में हूं। –
@ h2g2 - केवल कोड को दोबारा सुधारने के बाद - आप दूसरा उदाहरण गलत है, आपके पास इंटरफेस में एक कार्यान्वित विधि नहीं हो सकती है। या शायद घुंघराले ब्रैकेट उनके सही स्थानों पर नहीं थे ... –