जब भी आपके पास ऐसी कक्षा होती है जिसे आप अपनी सभी विधियों को लागू नहीं करना चाहते हैं तो आपको अमूर्तता की आवश्यकता होती है। इसे प्राप्त करने वाले वर्गों को उन सभी विधियों को लागू करने के लिए मजबूर किया जाएगा अन्यथा आपको उप-वर्गों को सार के रूप में घोषित करने की आवश्यकता होगी।
इसके अतिरिक्त आपको इंटरफ़ेस से अवगत होना चाहिए, इंटरफ़ेस के तरीकों में शरीर नहीं होना चाहिए और अच्छी बात यह है कि आपकी कक्षा जितनी चाहें उतनी इंटरफ़ेस को कार्यान्वित कर सकती है। जबकि, आप केवल एक अमूर्त वर्ग का उत्तराधिकारी हो सकते हैं। इंटरफेस अनुबंध की तरह हैं। जो भी कक्षा उन्हें लागू करती है उन्हें अपने सभी तरीकों के लिए शरीर उपलब्ध कराने की आवश्यकता होती है।
चाहे आपको सार या इंटरफ़ेस की आवश्यकता हो या दोनों वास्तव में आपके डिज़ाइन पर निर्भर हैं और आप क्या कार्यान्वित करना चाहते हैं। यद्यपि यह उन वर्गों को मजबूर करने के लिए एक अच्छा अभ्यास है, जिनके पास एक ही इंटरफ़ेस को लागू करने के लिए सामान्य विधियां हैं (यदि आप प्रत्येक विधियों के शरीर के बारे में कुछ भी नहीं जानते हैं) या सार (यदि आप जानते हैं कि कुछ का शरीर, सभी या इनमें से कोई भी नहीं विधियों)
एक और उदाहरण तब होगा जब आपके पास कुछ जोड़ना होगा या उन सभी वर्गों को जो उन्हें लागू कर रहे हैं, उन्हें संशोधित करने की आवश्यकता है, इसका मतलब है कि संशोधित होने के लिए और अधिक आसान हो सकता है।
this, this और this और open/close principle पर भी देखें।
यदि आप कुछ नया बना रहे हैं तो रूट इंटरफ़ेस या कम होना चाहिए, आप अमूर्त वर्ग का उपयोग कर सकते हैं। – Prashant