title: Are there any reasons to have an abstract class with every method in the class defined?
body: <p>It seems that an abstract class means the definition of the class is not complete and hence cannot be instantiated.</p>
  
  <p>And I saw some simple Java code which has an abstract class with all of the methods defined. Then I was wondering, why do they make it as an abstract class instead of a real class? Are they doing this so we cannot instantiate from this abstract class? Or they are getting other benefits from making an abstract class with everything defined?</p>