Feature |
Interface |
Abstract class |
Multiple inheritance |
A class may inherit several interfaces. |
A class may inherit only one abstract class. |
Default implementation |
An interface cannot provide any code, just the signature. |
An abstract class can provide complete, default code and/or just the details that have to be overridden.
|
Access Modifiers |
An interface cannot have access modifiers for the subs, functions, properties etc everything is assumed as public |
An abstract class can contain access modifiers for the subs, functions, properties |
Core VS Peripheral |
Interfaces are used to define the peripheral abilities of a class. In other words both Human and Vehicle can inherit from a IMovable interface. |
An abstract class defines the core identity of a class and there it is used for objects of the same type. |
|
|
|
Speed |
Requires more time to find the actual method in the corresponding classes. |
Fast |
Adding functionality (Versioning) |
If we add a new method to an Interface then we have to track down all the implementations of the interface and define implementation for the new method. |
If we add a new method to an abstract class then we have the option of providing default implementation and therefore all the existing code might work properly. |
Fields and Constants |
No fields can be defined in interfaces |
An abstract class can have fields and constrants defined |
Also Understand using code
using System;
namespace Abstracts
{
public abstract class Employee
{
protected String id;
protected String LastName;
protected String FirstName;
public abstract String ID
{
get;
set;
}
public abstract String FirstName
{
get;
set;
}
public abstract String LastName
{
get;
set;
}
public String Update1()
{
return "Employee " + id + " " +
lname + " " + fname +
" updated";
}
public String Add()
{
return "Employee " + id + " " +
lname + " " + fname +
" added";
}
public String Delete1()
{
return "Employee " + id + " " +
lname + " " + fname +
" deleted";
}
public String Search1()
{
return "Employee " + id + " " +
lname + " " + fname +
" found";
}
public abstract String CalculateWage();
}
}
No comments:
Post a Comment