1. Multiple inheritance
A class may inherit several interfaces.class abc : ICrud,IDisposal
A class may inherit only one abstract class.
class abc : parentClass
2. Default implementation
Interface: An interface cannot provide any code, just the signature.Example:
interface IPerson
{
void Add(string name, string email);
}
Abstract class: An abstract class can provide complete, default code and/or just the details that have to be overridden.
Example:
abstract class APerson
{
//
string Name;
string Email;
// like interface
public abstract void Add(string name, string email);
public void Update()
{
}
}
3. Access Modifiers
Interface: An interface cannot have access modifiers for the subs, functions, properties etc everything is assumed as public
interface IPerson
{
void Add(string name, string email);
}
class iPerson : IPerson
{
string Name;
string Email;
public void Add(string name, string email)
{
Email = email;
Name = name;
}
}
Abstract Class: An abstract class can contain access modifiers for the subs, functions, properties
abstract class APerson
{
//
protected string Name;
protected string Email;
// like interface
protected abstract void Add(string name, string email);
protected void Update()
{
}
}
class person : APerson
{
protected override void Add(string name, string email)
{
Email = email;
Name = name;
}
}
4. Where to Use
Interface: If various implementations only share method signatures then it is better to use Interfaces.Abstract Class: If various implementations are of the same kind and use common behaviour or status then abstract class is better to use.
5. Speed
Interface: Requires more time to find the actual method in the corresponding classes.Abstract Class: Faster then Interface
Comments
Post a Comment