Differentiate Abstract class and Interface
Ans
Features Interfaces 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 Modfiers
|
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.
|
Homogeneity
|
If various implementations only share method signatures
then it is better to use Interfaces.
|
If various implementations are of the same kind and use
common behaviour or status then abstract class is better to use.
|
Speed
|
Requires more time to find the actual method in the
corresponding classes.
|
Fast
|
- Main difference is methods of a Java interface are implicitly abstract and cannot have implementations. A Java abstract class can have instance methods that implements a default behavior.
- Variables declared in a Java interface is by default final. An abstract class may contain non-final variables.
- Members of a Java interface are public by default. A Java abstract class can have the usual flavors of class members like private, protected, etc..
- Java interface should be implemented using keyword “implements”; A Java abstract class should be extended using keyword “extends”.
- An interface can extend another Java interface only, an abstract class can extend another Java class and implement multiple Java interfaces.
- A Java class can implement multiple interfaces but it can extend only one abstract class.
- Interface is absolutely abstract and cannot be instantiated; A Java abstract class also cannot be instantiated, but can be invoked if a main() exists.
No comments:
Post a Comment