Oi Victor, tudo bem?
Embora não seja possível invocar o construtor através da classe abstrata, já que, como você disse, a instanciação de uma classe abstrata não ocorreria. É possível invocá-lo através das instancias dos objetos de suas subclasses, com o método super( args ) que ficaria dentro do construtor. No lugar de "args" seriam passados os argumentos/parâmetros de acordo com o que foi definido no construtor da classe abstrata. Usando o exemplo da aula, temos a classe abstrata Conta que possui um construtor que recebe dois parâmetros (int agencia, int numero), e a subclasse ContaCorrente que, em seu construtor, invoca o construtor da classe mãe abstrata Conta:
Portanto, a sua lógica está correta, definir um padrão para os filhos é uma razão válida para definir um construtor na classe abstrata.
É bom dar atenção para outro fator também, caso o construtor da classe abstrata não receba nenhum argumento, as subclasses que herdaram dela, ao instanciarem seus objetos, invocarão automaticamente esse construtor!! Isso se dá pelo fato de que quando uma classe é criada, por padrão, seu construtor terá essa cara, mesmo que não seja mostrado para nós:
class Derivado() extends Base {
public Derivado() {
super();
}
}
Ou seja, implicitamente, o construtor da classe mãe, nesse caso, a classe abstrata será invocado, contanto que o construtor da classe abstrata não receba parâmetros.
Espero ter ajudado, qualquer dúvida é só avisar!
Bons estudos!!