Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Java

एक अमूर्त वर्ग का उपयोग कब करें और जावा में इंटरफ़ेस का उपयोग कब करें?

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

एक अमूर्त वर्ग का उपयोग कब करें

  • एक अमूर्त वर्ग एक अच्छा विकल्प है यदि हम विरासत की अवधारणा का उपयोग कर रहे हैं क्योंकि यह व्युत्पन्न वर्गों के लिए एक सामान्य आधार वर्ग कार्यान्वयन प्रदान करता है।
  • अगर हम गैर-सार्वजनिक सदस्य घोषित करना चाहते हैं तो एक अमूर्त वर्ग भी अच्छा है। एक इंटरफ़ेस में, सभी विधियाँ सार्वजनिक होनी चाहिए।
  • यदि हम भविष्य में नई विधियों को जोड़ना चाहते हैं, तो एक अमूर्त वर्ग एक बेहतर विकल्प है। क्योंकि अगर हम किसी इंटरफ़ेस में नई विधियाँ जोड़ते हैं, तो उस इंटरफ़ेस को पहले से लागू करने वाले सभी वर्गों को नए तरीकों को लागू करने के लिए बदलना होगा।
  • अगर हम अपने कंपोनेंट के कई वर्जन बनाना चाहते हैं, तो एक एब्सट्रैक्ट क्लास बनाएं। सार कक्षाएं हमारे घटकों को संस्करणित करने का एक सरल और आसान तरीका प्रदान करती हैं। बेस क्लास को अपडेट करके, सभी इनहेरिट करने वाली क्लासेस अपने आप बदलाव के साथ अपडेट हो जाती हैं। दूसरी ओर, इंटरफेस को एक बार बनाने के बाद बदला नहीं जा सकता है। यदि किसी इंटरफ़ेस के नए संस्करण की आवश्यकता है, तो हमें एक संपूर्ण नया इंटरफ़ेस बनाना होगा।
  • एब्स्ट्रैक्ट क्लासेस को बेहतर फ़ॉरवर्ड संगतता की अनुमति देने का फ़ायदा है। एक बार क्लाइंट इंटरफ़ेस का उपयोग करने के बाद, हम इसे बदल नहीं सकते हैं; यदि वे एक अमूर्त वर्ग का उपयोग करते हैं, तब भी हम मौजूदा कोड को तोड़े बिना व्यवहार जोड़ सकते हैं।
  • यदि हम अपने घटक के सभी कार्यान्वयनों के बीच सामान्य, कार्यान्वित कार्यक्षमता प्रदान करना चाहते हैं, तो एक अमूर्त वर्ग का उपयोग करें। सार वर्ग हमें अपनी कक्षा को आंशिक रूप से लागू करने की अनुमति देते हैं, जबकि इंटरफेस में किसी भी सदस्य के लिए कोई कार्यान्वयन नहीं होता है।

उदाहरण

abstract class Car {
   public void accelerate() {
      System.out.println("Do something to accelerate");
   }
   public void applyBrakes() {
      System.out.println("Do something to apply brakes");
   }
   public abstract void changeGears();
}

अब, कोई भी कार जो तुरंत चालू होना चाहती है, उसे चेंजगियर्स () पद्धति को लागू करना होगा।

class Alto extends Car {
   public void changeGears() {
      System.out.println("Implement changeGears() method for Alto Car");
   }
}
class Santro extends Car {
   public void changeGears() {
      System.out.println("Implement changeGears() method for Santro Car");
   }
}

इंटरफ़ेस का उपयोग कब करें

  • यदि हम जो कार्यक्षमता बना रहे हैं वह अलग-अलग वस्तुओं की एक विस्तृत श्रृंखला में उपयोगी होगी, तो एक इंटरफ़ेस का उपयोग करें। एब्स्ट्रैक्ट क्लासेस का उपयोग प्राथमिक रूप से उन वस्तुओं के लिए किया जाना चाहिए जो निकट से संबंधित हैं, जबकि इंटरफेस असंबंधित वर्गों के लिए एक सामान्य कार्यक्षमता प्रदान करने के लिए सबसे उपयुक्त हैं।
  • इंटरफ़ेस एक अच्छा विकल्प है जब हमें लगता है कि एपीआई कुछ समय के लिए नहीं बदलेगा।
  • इंटरफ़ेस तब भी अच्छे होते हैं जब हम एकाधिक इनहेरिटेंस के समान कुछ चाहते हैं क्योंकि हम कई इंटरफ़ेस लागू कर सकते हैं।
  • यदि हम कार्यक्षमता के छोटे, संक्षिप्त बिट्स डिजाइन कर रहे हैं, तो इंटरफेस का उपयोग करें। अगर हम बड़ी कार्यात्मक इकाइयों को डिजाइन कर रहे हैं, तो एक अमूर्त वर्ग का उपयोग करें।

उदाहरण

public interface Actor {
   void perform();
}
public interface Producer {
   void invest();
}

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

public interface ActorProducer extends Actor, Producer{
   // some statements
}

  1. अमूर्त वर्ग और इंटरफ़ेस के बीच अंतर

    एक अमूर्त वर्ग में उदाहरण विधियां हो सकती हैं जो एक डिफ़ॉल्ट व्यवहार को लागू करती हैं। एक इंटरफ़ेस केवल स्थिरांक और उदाहरण विधियों की घोषणा कर सकता है, लेकिन डिफ़ॉल्ट व्यवहार को लागू नहीं कर सकता है और सभी विधियां निहित रूप से सार हैं। एक इंटरफ़ेस में सभी सार्वजनिक सदस्य होते हैं और कोई कार्यान्वयन

  1. जावा में इंटरफ़ेस

    एक इंटरफ़ेस जावा में एक संदर्भ प्रकार है। यह एक वर्ग के समान है। यह अमूर्त विधियों का एक संग्रह है। एक वर्ग एक इंटरफ़ेस लागू करता है, जिससे इंटरफ़ेस के अमूर्त तरीकों को विरासत में मिलता है। अमूर्त विधियों के साथ, एक इंटरफ़ेस में स्थिरांक, डिफ़ॉल्ट विधियाँ, स्थिर विधियाँ और नेस्टेड प्रकार भी हो सकते

  1. जावा में सार वर्ग

    जिस वर्ग की घोषणा में सार कीवर्ड होता है उसे अमूर्त वर्ग के रूप में जाना जाता है। एब्स्ट्रैक्ट क्लासेस में एब्सट्रैक्ट मेथड्स हो भी सकते हैं या नहीं भी हो सकते हैं, यानी बॉडी के बिना मेथड्स ( public void get(); ) लेकिन, यदि किसी वर्ग में कम से कम एक सार विधि है, तो कक्षा को सार घोषित किया जाना चाहि