Abstract classes can have methods with implementation whereas interface provides absolute abstraction and can’t have any method implementations, Abstract classes can extend other class and implement interfaces but interface can only extend other interfaces, We can run an abstract class if it has main() method but we can’t run an interface because they can’t have main method implementation.
1 Abstract classes can extend other class and implement interfaces but interface can only extend other interfaces. 2  We can run an abstract class if it has main() method but we can’t run an interface because they can’t have main method implementation. Any interface that implements a particular interface should implement all methods defined in the interface, or should be declared as an abstract class. In Java, the type of an object reference can be defined as an interface type. Abstract class and Interface are two object oriented constructs found in many object oriented programming languages like Java. Abstract class can be considered as an abstract version of a regular (concrete) class, while an interface can be considered as a means of implementing a contract. In that way, an interface in C# is similar to an abstract class in which all the methods are abstract. However, a class or struct can implement multiple interfaces, but a class can inherit only a single class, abstract or not. Therefore, by using interfaces, you can include behavior from multiple sources in a class. Abstract classes are either partially implemented or not implemented at all. You can have functionality in your abstract class -- the methods in an abstract class can be both abstract and concrete. An abstract class can have constructors -- this is one major difference between an abstract class and an interface. An interface is an abstract type that is used to specify a contract that should be implemented by classes, which implement that interface. The interface keyword is used to define an interface and Implements keyword is used for implementing an interface by a class (in Java programming language). A class may extend only one abstract class. default implementation. An interface cannot provide any code at all, much less default code. An abstract class can provide complete code, default code and/or just stubs that have to be overridden. constants. Static final constants only, can use them without qualification in classes that implement the interface. 1 Abstract classes can have methods with implementation whereas interface provides absolute abstraction and can’t have any method implementations. 2  Abstract classes can have constructors but interfaces can’t have constructors. 3  Abstract class have all the features of a normal java class except that we can’t instantiate it. @Jiazzyuser If an abstract class implements an interface, it does not have to actually define the interface's methods. That requirement can be deferred to inheriting/child concrete classes. However, a concrete class must implement all interface methods that are not implemented by its parent class.
http://www.journaldev.com/1607/difference-between-abstract-class-and-interface-in-java http://www.differencebetween.com/difference-between-abstract-class-and-vs-interface/ http://www.differencebetween.com/difference-between-abstract-class-and-vs-interface/ https://msdn.microsoft.com/en-us/library/ms173156.aspx http://www.infoworld.com/article/2928719/c-sharp/my-two-cents-on-abstract-class-vs-interface.html http://www.differencebetween.com/difference-between-abstract-class-and-vs-interface/ http://mindprod.com/jgloss/interfacevsabstract.html http://www.journaldev.com/1607/difference-between-abstract-class-and-interface-in-java http://stackoverflow.com/questions/1913098/what-is-the-difference-between-an-interface-and-abstract-class
how interface different from abstract class
कैसे इंटरफ़ेस सार वर्ग से अलग है
सार वर्गों में कार्यान्वयन के साथ विधियां हो सकती हैं जबकि इंटरफ़ेस पूर्ण अमूर्तता प्रदान करता है और इसमें कोई विधि कार्यान्वयन नहीं हो सकता है, सार वर्ग अन्य वर्ग का विस्तार कर सकते हैं और इंटरफेस को लागू कर सकते हैं लेकिन इंटरफ़ेस केवल अन्य इंटरफेस का विस्तार कर सकता है, हम एक सार वर्ग चला सकते हैं यदि इसमें main() विधि है लेकिन हम एक इंटरफ़ेस नहीं चला सकते क्योंकि उनके पास मुख्य विधि कार्यान्वयन नहीं हो सकता है।
1 सार कक्षाएं अन्य वर्ग का विस्तार कर सकती हैं और इंटरफेस को लागू कर सकती हैं लेकिन इंटरफ़ेस केवल अन्य इंटरफेस का विस्तार कर सकता है। यदि इसमें main() विधि है तो हम एक सार वर्ग चला सकते हैं लेकिन हम एक इंटरफ़ेस नहीं चला सकते क्योंकि उनके पास मुख्य विधि कार्यान्वयन नहीं हो सकता है। कोई भी इंटरफ़ेस जो किसी विशेष इंटरफ़ेस को लागू करता है, उसे इंटरफ़ेस में परिभाषित सभी विधियों को लागू करना चाहिए, या एक सार वर्ग के रूप में घोषित किया जाना चाहिए। जावा में, ऑब्जेक्ट संदर्भ के प्रकार को इंटरफ़ेस प्रकार के रूप में परिभाषित किया जा सकता है। सार वर्ग और इंटरफ़ेस दो ऑब्जेक्ट ओरिएंटेड कंस्ट्रक्शन हैं जो जावा जैसी कई ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषाओं में पाए जाते हैं। सार वर्ग को एक नियमित (ठोस) वर्ग का एक अमूर्त संस्करण माना जा सकता है, जबकि एक इंटरफ़ेस को एक अनुबंध को लागू करने के साधन के रूप में माना जा सकता है। इस तरह, सी # में एक इंटरफ़ेस एक अमूर्त वर्ग के समान है जिसमें सभी विधियां सार हैं। हालांकि, एक वर्ग या संरचना कई इंटरफेस को लागू कर सकती है, लेकिन एक वर्ग केवल एक वर्ग, सार या नहीं विरासत में ले सकता है। इसलिए, इंटरफ़ेस का उपयोग करके, आप किसी वर्ग में एकाधिक स्रोतों से व्यवहार शामिल कर सकते हैं। सार कक्षाएं या तो आंशिक रूप से लागू की जाती हैं या बिल्कुल लागू नहीं की जाती हैं। आपके अमूर्त वर्ग में कार्यक्षमता हो सकती है - एक अमूर्त वर्ग में विधियां अमूर्त और ठोस दोनों हो सकती हैं। एक अमूर्त वर्ग में निर्माता हो सकते हैं - यह एक अमूर्त वर्ग और एक इंटरफ़ेस के बीच एक बड़ा अंतर है। एक इंटरफ़ेस एक अमूर्त प्रकार है जिसका उपयोग एक अनुबंध निर्दिष्ट करने के लिए किया जाता है जिसे कक्षाओं द्वारा कार्यान्वित किया जाना चाहिए, जो उस इंटरफ़ेस को लागू करते हैं। इंटरफ़ेस कीवर्ड का उपयोग इंटरफ़ेस को परिभाषित करने के लिए किया जाता है और इम्प्लीमेंट्स कीवर्ड का उपयोग एक वर्ग (जावा प्रोग्रामिंग भाषा में) द्वारा इंटरफ़ेस को लागू करने के लिए किया जाता है। एक वर्ग केवल एक सार वर्ग का विस्तार कर सकता है। डिफ़ॉल्ट कार्यान्वयन। एक इंटरफ़ेस कोई कोड प्रदान नहीं कर सकता है, बहुत कम डिफ़ॉल्ट कोड। एक सार वर्ग पूर्ण कोड, डिफ़ॉल्ट कोड और / या सिर्फ स्टब्स प्रदान कर सकता है जिन्हें ओवरराइड करना होगा। स्थिरांक। केवल स्थैतिक अंतिम स्थिरांक, इंटरफ़ेस को लागू करने वाली कक्षाओं में योग्यता के बिना उनका उपयोग कर सकते हैं। 1 सार वर्गों में कार्यान्वयन के साथ विधियां हो सकती हैं जबकि इंटरफ़ेस पूर्ण अमूर्तता प्रदान करता है और इसमें कोई विधि कार्यान्वयन नहीं हो सकता है। 2 सार वर्गों में कन्स्ट्रक्टर हो सकते हैं लेकिन इंटरफेस में कन्स्ट्रक्टर नहीं हो सकते हैं। सार वर्ग में एक सामान्य जावा वर्ग की सभी विशेषताएं हैं सिवाय इसके कि हम इसे तत्काल नहीं कर सकते। @Jiazzyuser यदि कोई अमूर्त वर्ग एक इंटरफ़ेस लागू करता है, तो उसे वास्तव में इंटरफ़ेस के तरीकों को परिभाषित करने की आवश्यकता नहीं है। उस आवश्यकता को विरासत में / हालांकि, एक ठोस वर्ग को उन सभी इंटरफ़ेस विधियों को लागू करना चाहिए जो इसके मूल वर्ग द्वारा कार्यान्वित नहीं की जाती हैं।
अमूर्त वर्गापेक्षा इंटरफेस कसा वेगळा
1 अमूर्त वर्ग इतर वर्ग वाढवू शकतात आणि इंटरफेस कार्यान्वित करू शकतात परंतु इंटरफेस केवळ इतर इंटरफेस वाढवू शकतो. २ मुख्य () पद्धत असेल तर आपण अमूर्त वर्ग चालवू शकतो परंतु मुख्य पद्धत अंमलात आणता येत नसल्यामुळे आपण इंटरफेस चालवू शकत नाही. विशिष्ट इंटरफेस लागू करणार्या कोणत्याही इंटरफेसने इंटरफेसमध्ये परिभाषित केलेल्या सर्व पद्धती अंमलात आणल्या पाहिजेत किंवा अमूर्त वर्ग म्हणून घोषित केल्या पाहिजेत. जावामध्ये, ऑब्जेक्ट संदर्भाचा प्रकार इंटरफेस प्रकार म्हणून परिभाषित केला जाऊ शकतो. अमूर्त वर्ग आणि इंटरफेस ही दोन ऑब्जेक्ट ओरिएंटेड रचना आहेत जी जावासारख्या बर्याच ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषांमध्ये आढळतात. अमूर्त वर्ग हा नियमित (ठोस) वर्गाची अमूर्त आवृत्ती मानला जाऊ शकतो, तर इंटरफेस हा करार अंमलात आणण्याचे साधन मानला जाऊ शकतो. अशा प्रकारे, सी # मधील इंटरफेस अमूर्त वर्गासारखा आहे ज्यामध्ये सर्व पद्धती अमूर्त आहेत. तथापि, एक वर्ग किंवा रचना एकाधिक इंटरफेस लागू करू शकते, परंतु एक वर्ग अमूर्त असो वा नसो, केवळ एकाच वर्गाचा वारसा घेऊ शकतो. म्हणूनच, इंटरफेस वापरुन, आपण वर्गात एकाधिक स्त्रोतांकडून वर्तन समाविष्ट करू शकता. अमूर्त वर्ग एकतर अंशत: लागू केले जातात किंवा अजिबात लागू केले जात नाहीत. आपण आपल्या अमूर्त वर्गात कार्यक्षमता ठेवू शकता - अमूर्त वर्गातील पद्धती अमूर्त आणि ठोस दोन्ही असू शकतात. अमूर्त वर्गात रचनाकार असू शकतात - अमूर्त वर्ग आणि इंटरफेस मधील हा एक मोठा फरक आहे. इंटरफेस हा एक अमूर्त प्रकार आहे जो त्या इंटरफेसची अंमलबजावणी करणार्या वर्गांद्वारे अंमलात आणल्या जाणार्या करारास निर्दिष्ट करण्यासाठी वापरला जातो. इंटरफेस कीवर्डचा वापर इंटरफेस परिभाषित करण्यासाठी केला जातो आणि अंमलबजावणी कीवर्ड वर्गाद्वारे इंटरफेस लागू करण्यासाठी वापरला जातो (जावा प्रोग्रामिंग भाषेत). एक वर्ग केवळ एक अमूर्त वर्ग वाढवू शकतो. डिफॉल्ट अंमलबजावणी. इंटरफेस कोणताही कोड प्रदान करू शकत नाही, खूप कमी डिफॉल्ट कोड. एक अमूर्त वर्ग संपूर्ण कोड, डिफॉल्ट कोड आणि / किंवा फक्त स्टब प्रदान करू शकतो ज्याला ओव्हरलोड करावे लागेल. स्थिरांक। केवळ स्थिर अंतिम स्थिरांक, इंटरफेस लागू करणार्या वर्गांमध्ये पात्रतेशिवाय त्यांचा वापर करू शकतात. 1 अमूर्त वर्गांमध्ये अंमलबजावणीसह पद्धती असू शकतात तर इंटरफेस पूर्ण अमूर्तता प्रदान करते आणि कोणतीही पद्धत अंमलबजावणी करू शकत नाही. 2 अमूर्त वर्गात कन्स्ट्रक्टर असू शकतात परंतु इंटरफेसमध्ये कन्स्ट्रक्टर असू शकत नाहीत. ३ अमूर्त वर्गात सामान्य जावा वर्गाची सर्व वैशिष्टय़े आहेत, शिवाय आपण ती बदलू शकत नाही. @Jiazzyuser जर एखादा अमूर्त वर्ग इंटरफेस अंमलात आणत असेल तर त्याला इंटरफेसच्या पद्धती प्रत्यक्षात परिभाषित करण्याची आवश्यकता नाही. ही गरज वारसा/बाल ठोस वर्गापुरती पुढे ढकलता येते. तथापि, ठोस वर्गाने सर्व इंटरफेस पद्धती अंमलात आणल्या पाहिजेत ज्या त्याच्या पालक वर्गाद्वारे अंमलात आणल्या जात नाहीत.
अमूर्त वर्गांमध्ये अंमलबजावणीसह पद्धती असू शकतात तर इंटरफेस निरपेक्ष अमूर्तता प्रदान करते आणि कोणतीही पद्धत अंमलबजावणी करू शकत नाही, अमूर्त वर्ग इतर वर्ग वाढवू शकतात आणि इंटरफेस लागू करू शकतात परंतु इंटरफेस केवळ इतर इंटरफेस वाढवू शकतो, मुख्य () पद्धत असल्यास आम्ही अमूर्त वर्ग चालवू शकतो परंतु आम्ही इंटरफेस चालवू शकत नाही कारण त्यांच्याकडे मुख्य पद्धत अंमलबजावणी असू शकत नाही.