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 यदि कोई अमूर्त वर्ग एक इंटरफ़ेस लागू करता है, तो उसे वास्तव में इंटरफ़ेस के तरीकों को परिभाषित करने की आवश्यकता नहीं है। उस आवश्यकता को विरासत में / हालांकि, एक ठोस वर्ग को उन सभी इंटरफ़ेस विधियों को लागू करना चाहिए जो इसके मूल वर्ग द्वारा कार्यान्वित नहीं की जाती हैं।