मैंने पॉलिमॉर्फिज्म का अध्ययन किया और समझ लिया कि यह नीचे की तरह गतिशील विधि बाध्यकारी कर सकता है।ArrayList ऑब्जेक्ट बनाने के लिए संग्रह इंटरफ़ेस का उपयोग करके बहुरूपता का क्या फायदा है?
मानते हैं कि कक्षा पशु अमूर्त वर्ग है।
public class AnimalReference
{
public static void main(String args[])
Animal ref // set up var for an Animal
Cow aCow = new Cow("Bossy"); // makes specific objects
Dog aDog = new Dog("Rover");
// now reference each as an Animal
ref = aCow; ref.speak();
ref = aDog; ref.speak();
}
मैं की तरह ArrayList के उदाहरण बनाने के लिए इस्तेमाल:
ArrayList myList = new ArrayList();
लेकिन आम तौर पर मैं लगा कि लोगों को लिखें:
Collection myList = new ArrayList();
तो मेरी भ्रम क्या संग्रह के रूप में घोषित करने के लाभ है ? इसके अलावा मुझे नहीं पता था कि "MyList" के सामने आपके पास "संग्रह" (जो एक इंटरफ़ेस नहीं है) श्रेणी हो सकता है।
क्यों यह अच्छा अभ्यास नहीं है सिर्फ इतना कहना है:
ArrayList myList = new ArrayList();
मैं संग्रह इंटरफेस और ArrayList जावा दस्तावेजों के साथ ही ऑनलाइन ट्यूटोरियल पढ़ा है लेकिन अभी भी वास्तव में स्पष्ट नहीं .. किसी को भी मुझे कुछ स्पष्टीकरण देने सकते हैं?
कृपया विस्तार करें कि यह क्यों अच्छा अभ्यास है। –
@ जैकोब टॉमॉ यह अच्छा अभ्यास है क्योंकि आप स्पष्ट रूप से संकेत दे रहे हैं कि आपको चर _declaration_ में किस कार्यक्षमता की आवश्यकता है। कि आप _initialization_ में 'ArrayList' चुनते हैं अप्रासंगिक है (हालांकि एक अच्छी डिफ़ॉल्ट पसंद); यह घोषणा कि यह 'संग्रह' है, आपको और भविष्य के कोडर को बताता है कि आप किस अनुबंध के बारे में सोचते हैं। –
आप अपने जवाब को नाटकीय रूप से सुधार सकते हैं जिसमें जवाब देने के बजाय उत्तर में यह पता चलता है कि हर कोई जानता है कि यह अच्छा अभ्यास क्यों है। मुझे लगता है कि इस प्रश्न को पढ़ने वाले अधिकांश लोगों के पास आपके पास अनुभव नहीं होगा। –