An interface is a "contract". If a class implements an interface it has to propose all the services listed in the interface.
An abstract class is a skeleton. It defines a certain way its extended classes will work while letting them some free space (the abstract methods) to be unique.
A pure abstract class doing the same thing as an interface but have the problem of unique extending so, for me, it have no interest.
Every interface is implicitly abstract
Every method declaration in the body of interface is implicitly abstract and public.
An abstract class has methods that can contain implementation. Abstract methods can be either public, protected or default access (package visible). Unlike interfaces abstract classes can contain fields that are not static and final.
| Interface | Abstract Class |
Extend Class | No | Yes |
Extend Abstract Class | No | Yes |
Implement Interface | Yes(Extend Interface) | Yes |
Variables | public static final | public/protected/private/static/final/transient/volatile |
Contain Non-Public Method | No | Yes |
Contain Abstract Method | Yes | No |
No comments:
Post a Comment