Probably "Difference Between abstract Class and Interface" is the most frequent question being asked in .Net world . In this tutorial, I will explain the difference theoretically followed by code snippet. Theoretically there are basically 5 differences between Abstract Class and Interface which are listed as below :-
interface TestInterface
{
int x = 4; // Filed Declaration in Interface
void getMethod();
string getName();
}
abstract class TestAbstractClass
int i = 4;
int k = 3;
public abstract void getClassName();
}It will generate a compile time error as :-Error 1 Interfaces cannot contain fields .So we need to omit Field Declaration in order to compile the code properly.interface TestInterface{ void getMethod(); string getName();}
}Above code compiles properly as no field declaration is there in Interface.
An abstract class can have constructor declaration while an interface can not do so.So following code will not compile :-
// Constructor Declaration
public TestInterface()
public TestAbstractClass()
Above code will generate a compile time error as :-Error 1 Interfaces cannot contain constructors So we need to omit constructor declaration from interface in order to compile our code .Following code compile s perfectly :-
An abstract Class is allowed to have all access modifiers for all of its member declaration while in interface we can not declare any access modifier(including public) as all the members of interface are implicitly public. Note here I am talking about the access specifiers of the member of interface and not about the interface.Following code will explain it better :-It is perfectly legal to give provide access specifier as Public (Remember only public is allowed) public interface TestInterface { void getMethod(); string getName(); } Above code compiles perfectly.It is not allowed to give any access specifier to the members of the Interface.
public interface TestInterface
public void getMethod();
public string getName();
}Above code will generate a compile time error as :-Error 1 The modifier 'public' is not valid for this item.But the best way of declaring Interface will be to avoid access specifier on interface as well as members of interface.interface Test
Abstract Class vs Interface
Singleton Design Patterns in C#
Hey we use interfaces because we get the advantage of multiple inheritance. C# allows multiple inheritance through interfaces but not through classes.
Nice Article
Hi, you can go the following link to find your question's ans http://www.codeproject.com/KB/cs/abstractsvsinterfaces.aspx http://stackoverflow.com/questions/239127/exact-use-of-abstract-class
Hi, I want to add something in point-3.Point-3 states - "An abstract class can declare or use any variables while an interface is not allowed to do so." But interface can have Properties. This point has to be added in Article.Please Correct me if I'm wrong.!!!
Hi , Can any one plz tell me what is the exact use of Interfaces,In which scenario we use interface and in which case we use abstract class,Plz explain with an example.....If we can achieve our goal by using abstract class,y do we use interfaces?????