abstract keyword in Java

The abstract keyword is a non-access modifier, used for classes and methods. 
<b>Class:</b> 
An abstract class is a restricted class that cannot be used to create objects (to access it, it must be inherited from another class).  An abstract class can never be instantiated. Its sole purpose is to be extended (sub-classed).
You can't mark a class as both abstract and final. They have nearly opposite meanings. An abstract class must be sub-classed, whereas a final class must not be sub-classed. If you see this combination of abstract and final modifiers, used for a class or method declaration, the code will not compile.
<b>Method: </b>
An abstract method can only be used in an abstract class, and it does not have a body. Notice that the methods marked abstract end in a semicolon rather than curly braces.