java - diferença única entre classe abstrata e classe concreta

Eu sei algumas diferenças entre classe abstrata e classe concreta. Eu sei que você não pode criar uma instância com a classe abstrata, ao contrário da classe concreta, a classe abstrata pode ter métodos 'abstratos'.

Mas eu tenho um exemplo como o seguinte. Muitas vezes, vemos os exemplos a seguir no trabalho. Vou apenas pular alguns métodos comuns que podem ser definidos na classe Parent.

public abstract class Parent {
    public void init() {
       doInit();
    }
    public abstract void doInit();
}

public class Child extends Parent {
    public void doInit() {
       // implementation
    }
}

Eu acho que podemos fazer a mesma coisa com uma classe concreta como a seguinte.

public class Parent {
    public void init() {
      doInit();
    }
    public void doInit() {
       // Empty
    }
}

Estou curioso para ver se existe alguma situação única que temos que usar a classe abstrata. Existe alguma diferença significativa durante o tempo de execução com o exemplo acima?

Obrigado.

questionAnswers(4)

yourAnswerToTheQuestion