title: java - unique difference between abstract class and concrete class
body: <p>I know few differences between abstract class and concrete class. I know that you can't create an instance with abstract class unlike concrete class, abstract class can have 'abstract' methods. </p>
  
  <p>But i have an example like the following. A lot of times, we see the following examples at work. I will just skip some common methods that can be defined in the Parent class.</p>
  
  <pre><code>public abstract class Parent {
      public void init() {
         doInit();
      }
      public abstract void doInit();
  }
  
  public class Child extends Parent {
      public void doInit() {
         // implementation
      }
  }
  </code></pre>
  
  <p>I think that we can do the same thing with a concrete class like the following.</p>
  
  <pre><code>public class Parent {
      public void init() {
        doInit();
      }
      public void doInit() {
         // Empty
      }
  }
  </code></pre>
  
  <p>I am curious to see if there is any unique situation that we have to use abstract class.  Is there any significant difference during runtime with the above example?</p>
  
  <p>Thank you.</p>