What is the difference
between an abstract class and an interface and when should you use them?
In design, you want the
base class to present only an interface for its derived classes. This means,
you don’t want anyone to actually instantiate an object of the base class. You
only want to upcast to it (implicit upcasting, which gives you polymorphic
behavior), so that its interface can be used. This is accomplished by making
that class abstract using the abstract keyword. If anyone tries to make an
object of an abstract class, the compiler prevents it.
The interface keyword
takes this concept of an abstract class a step further by preventing any method
or function implementation at all. You can only declare a method or function
but not provide the implementation. The class, which is implementing the
interface, should provide the actual implementation. The interface is a very
useful and
Commonly used aspect in
OO design, as it provides the separation of interface and implementation and
enables you to:
·
Capture similarities among unrelated classes without
artificially forcing a class relationship.
·
Declare methods that one or more classes are expected
to implement.
·
Reveal an object's programming interface without
revealing its actual implementation.
·
Model multiple interface inheritance in Java, which
provides some of the benefits of full on multiple inheritances, a feature that
some object-oriented languages support that allow a class to have more than one
superclass.
To avoid Diamond
problem, we can use Interfaces.
When to use an abstract
class?
In case where you want
to use implementation inheritance then it is
usually provided by an
abstract base class. Abstract classes are excellent candidates inside of
application frameworks. Abstract classes let you define some default behavior
and force subclasses to provide any specific behavior. Care should be taken not
to overuse implementation inheritance.
When to use an interface?
For polymorphic
interface inheritance, where the client wants to only deal with a
type and does not care
about the actual implementation use interfaces.
No comments:
Post a Comment